History log of /external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
a5453051f0c8b71a833f6dc73caaea43bd24a0db 29-Sep-2017 cushon <cushon@google.com> Fix a crash in constant expression binding

MOE_MIGRATED_REVID=170420622
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
33e253bd3b1ce0d4939345229e78523063527eeb 26-Sep-2017 cushon <cushon@google.com> Improve diagnostics for repeated unrepeatable annotations

MOE_MIGRATED_REVID=170009080
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
3de8ed9a49a939e11961146bf5b6a41c20dc7f79 11-Apr-2017 cushon <cushon@google.com> Fix top-level constant expression evaluation

When evaluating constant expressions at the top level (e.g. in an
annotation on a top-level type declaration), inherited members of the
type being declared are in scope. Members of the type itself are not.
To implement this correctly, distinguish between the symbol used for
visibility checks when resolving fields (origin), and the symbol used
for lexical field lookup (null for top-level types).

MOE_MIGRATED_REVID=152778257
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
2f66fb86c5de3e13b58b1a521ffc307c8cef1f50 15-Dec-2016 cushon <cushon@google.com> Check visibility of static on-demand type imports

Move initial modifier handling earlier in binding, and use it to filter
private class and fields from on-demand imports.

MOE_MIGRATED_REVID=142092576
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
b25a536a58cfc542d70a118aebc30d3a9dea5654 03-Dec-2016 cushon <cushon@google.com> Refactor diagnostic handling to use diagnostic codes

instead of raw format strings. This will make it easier to recognize
errors that merit special handling.

MOE_MIGRATED_REVID=140902411
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
cdefacdcf613684b385797d2d4340f3fa7dcce2d 16-Nov-2016 cushon <cushon@google.com> Fix class declaration annotation-context constant binding

Annotation on class declarations can't resolve members of the class.
This was previously fixes for simple name type lookup. This fixes it for
simple name constant field lookup.

MOE_MIGRATED_REVID=139383534
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
5f9257de4904d710941a3f434de0e0c3618a4e75 16-Nov-2016 cushon <cushon@google.com> Make constant expression evaluation FP-strict

https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.4

MOE_MIGRATED_REVID=139262607
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
d161fb6fcbd2e8ab64abf467823920398ad34b63 12-Nov-2016 cushon <cushon@google.com> Coerce annotation array values to the appropriate element type

MOE_MIGRATED_REVID=138930155
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
aa81f608f1790015683a9368bc15924fc9c89767 04-Nov-2016 cushon <cushon@google.com> Fix class reading of deficient constant types

char, byte, and short are encoded as ints in bytecode, so stringifying
bytecode constant chars didn't work.

Also fix a latent bug with unary operator evaluation.

MOE_MIGRATED_REVID=138215540
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
9f3e44c5390f7c1845078865d0ef07357e949080 03-Nov-2016 cushon <cushon@google.com> Perform implicit narrowing and widening on field initializer values

MOE_MIGRATED_REVID=138014342
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
125eca769fc3038f6466b6f1139b56945bf86ca9 02-Nov-2016 cushon <cushon@google.com> Fix simple name lookup of fields

If the simple name of a constant field matches an imported type, keep
looking. Types should only be considered for qualified type names.

MOE_MIGRATED_REVID=137962449
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
c4b9629cb88f39fb5a648e2081f43afbb2685766 01-Nov-2016 cushon <cushon@google.com> Handle array class literals, which can appear in annotations

MOE_MIGRATED_REVID=137779342
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
16d4fb60dd03fe84f50a96d42db6180a286fc3db 01-Nov-2016 cushon <cushon@google.com> Fix scope handling during annotation binding

When binding annotations on a class declaration, members of that class
are not in scope (e.g. for use as class literals in annotation element
values).

Keep track of the scope that encloses class declaration in addition to
the class member scope, and use the former when binding annotations on
the class.

MOE_MIGRATED_REVID=137767162
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
ecb791c15008191f75be7a7e747bb387530d16d2 31-Oct-2016 cushon <cushon@google.com> Disambiguate type annotations on fields, parameters, and methods

Given a declaration like `private @A int x;` or `@A private int x;`,
there are three possibilities:

* `@A` is a declaration annotation on the field
* `@A` is a `TYPE_USE` annotation on the type
* `@A` sets `TYPE_USE` _and_ `FIELD` targets, and appears in the
bytecode as both a declaration annotation and as a type annotation

This can't be determined syntactically -- note that the presence of
other modifiers before or after the annotation has no bearing on whether
the annotation targets the type or the declaration.

So, we wait until constant binding is done, read the `@Target`
meta-annotation for each ambiguous annotation, and move it to the
appropriate location.

MOE_MIGRATED_REVID=137749757
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
05878b6cb86f32245891d6e4504a8b1e7fcd2155 28-Oct-2016 cushon <cushon@google.com> Refactor in preparation for type annotation support

Types will soon depend on annotations, which depend on constants, which
may have types. Untangle that by moving bound non-primitive constants
(enums, annotations, class literals) to the bound node package, and
moving annotation info into the type package.

MOE_MIGRATED_REVID=137465249
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
c4fcb03ad72af457d0448f4207085c2a60b4ae52 26-Oct-2016 cushon <cushon@google.com> Consider visibility during member resolution

Don't resolve inaccessible private or package-protected members in super
types.

MOE_MIGRATED_REVID=137218921
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
b622e5e85b83090ebec0aa9601c1348e91d20095 20-Oct-2016 cushon <cushon@google.com> Fix a crash in constant expression evaluation

There's currently no distinction made between evaluating expressions
that are legal constant variable initializers and constant expressions
that are only value as annotation arguments (class literals, nested
annotations, enum constants). Don't crash if a potentially constant
variable initializer evaluates to an unsupported constant kind.

MOE_MIGRATED_REVID=136738109
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
a086f7ddb24d35d1c45a3524520d8bffbf1f213b 19-Oct-2016 cushon <cushon@google.com> Fix another non-const expression binding crash

It's possible to resolve a qualified prefix of an expression that turns
out to be non-constant.

MOE_MIGRATED_REVID=136634305
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
806d6a5f4a319f2c00baf2334732024c5bdcacb5 19-Oct-2016 cushon <cushon@google.com> Don't crash when evaluating non-constant expressions

MOE_MIGRATED_REVID=136542923
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
10cea422ebb6f3c02cc0e1a744bd3b1515e1891e 18-Oct-2016 cushon <cushon@google.com> Fix annotation-context binding of constants in class files

The env of constant variables wasn't being set up to include constants
on the classpath when binding annotations. Instead, we can just read the
constant values directly from the bound fields if they're already there.

MOE_MIGRATED_REVID=136493292
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
b0445ae9c37a1fab07fb5f234653e8ea072bf9fc 18-Oct-2016 cushon <cushon@google.com> Diagnostic improvements

Store position information in the AST, and use it to emit better errors
during binding. Refactor some passes to be non-static to make it easier
to pass context needed to format diagnostics.

MOE_MIGRATED_REVID=136492057
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
75946a85fe655bafc006b96e4ddf01990d5f2f7c 18-Oct-2016 cushon <cushon@google.com> Fix lookup of fields in interfaces

MOE_MIGRATED_REVID=136422410
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
5a010f8e1f9613af8a23aaab28a64d6c83eb48fb 17-Oct-2016 cushon <cushon@google.com> Best-effort wildcard import handling

Static imports of types (on-demand or otherwise) are still unlikely to
ever be supported, and performance is worse than single-type and
single-member imports.

MOE_MIGRATED_REVID=136378350
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
5bd34220e797da6446ba3f69aae9d62023171a9e 17-Oct-2016 cushon <cushon@google.com> Avoid unnecessary joining and splitting of qualified names

MOE_MIGRATED_REVID=136376050
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
c38ee7ae0239899e7f9d0d5243d8bed77836891c 17-Oct-2016 cushon <cushon@google.com> Handle primitive and void class literals

MOE_MIGRATED_REVID=136373334
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
9caa21d0878d450fea8f5fc30be49d3f88c67686 17-Oct-2016 cushon <cushon@google.com> Implement unary expressions on more types

MOE_MIGRATED_REVID=136368041
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
e76a67fe16eca2332a93f4426e2842275458b008 12-Oct-2016 cushon <cushon@google.com> Fix static imports of members of nested types

Previously only static imports of members in top-level types were
handled correctly.

MOE_MIGRATED_REVID=135948776
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
83d53bb2e7f30a1c344f4aaa4320668f9dbc12f4 12-Oct-2016 cushon <cushon@google.com> Fix handling of nested annotations

MOE_MIGRATED_REVID=135935475
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
3088f83b806b82d866d119e344da274105f42821 11-Oct-2016 cushon <cushon@google.com> Full JLS 7 annotation handling

Support all annotation values including nested annotations and array
initializers, and all declaration annotation sites including parameters
and methods.

MOE_MIGRATED_REVID=135837401
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
4d51bb2c21dffcb267e9b3a3538117adc6009e57 08-Oct-2016 cushon <cushon@google.com> Initial annotation binding and writing

Includes declaration annotations on fields and classes, and handling of
annotation declarations and retentions.

Declaration annotations on methods and parameters, as well as class
literal and nested annotation values, are not yet supported.

MOE_MIGRATED_REVID=135531109
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
e00c9907c7a2be5cac0133c972a3037c9a02d6a5 07-Oct-2016 cushon <cushon@google.com> JLS 15.28 constant expression evaluation

MOE_MIGRATED_REVID=135510648
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java
bd2b29bb7fd05aed8481ef8342c09c4e88492c88 07-Oct-2016 cushon <cushon@google.com> Constant fields

Initial constant field handling. Currently only literal values and
references to other fields are supported, constant expression evaluation
will be added later. Includes class file writing support for additional
literal kinds.

MOE_MIGRATED_REVID=135506016
/external/turbine/java/com/google/turbine/binder/ConstEvaluator.java