History log of /external/turbine/java/com/google/turbine/binder/CanonicalTypeBinder.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
d2553153c2bceedf08075908a4b498e9e783e8f1 05-Jan-2017 cushon <cushon@google.com> Remove redundant super type symbols from SourceTypeBoundClass

These nodes already have types for super classes and super interfaces,
and the symbol can be read from the type. Storing the symbol separately
was redundant and made it possible for the two to be out of sync.

Also fix a bug where enum superclass types (instead of superinterface
types) were set to java.lang.annotation.Enum, which was masked because
the symbol information was correct.

MOE_MIGRATED_REVID=143618845
/external/turbine/java/com/google/turbine/binder/CanonicalTypeBinder.java
d3435df28ea1bf96be1ac33ee7813e215c98ab69 21-Nov-2016 cushon <cushon@google.com> Canonicalize types in receiver parameters

MOE_MIGRATED_REVID=139792591
/external/turbine/java/com/google/turbine/binder/CanonicalTypeBinder.java
4f0d47545d6c6eb6c7fbdcb19c09fe90088e3f81 21-Nov-2016 cushon <cushon@google.com> Fix a type resolution and canonicalization bug

Interface and superclass type arguments cannot refer to members of the
current type, so any simple name references to member types are not
implicitly qualified by the current class.

MOE_MIGRATED_REVID=139791656
/external/turbine/java/com/google/turbine/binder/CanonicalTypeBinder.java
3d2df35d983a31bc7a68e1d76b7c71956f477871 17-Nov-2016 cushon <cushon@google.com> Emit MethodParameters attributes

MOE_MIGRATED_REVID=139397608
/external/turbine/java/com/google/turbine/binder/CanonicalTypeBinder.java
86eb6f1c5b02fc461b47602de67551361f9d695f 03-Nov-2016 cushon <cushon@google.com> Support repeatable annotations

Also consolidate handling of annotation meta-information (target,
retention, and now repeatable).

MOE_MIGRATED_REVID=138010789
/external/turbine/java/com/google/turbine/binder/CanonicalTypeBinder.java
57c8dbfe42ab7413b1450f74d8f3a19a9f214dec 01-Nov-2016 cushon <cushon@google.com> Initial implementation of receiver parameters

MOE_MIGRATED_REVID=137778383
/external/turbine/java/com/google/turbine/binder/CanonicalTypeBinder.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/CanonicalTypeBinder.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/CanonicalTypeBinder.java
3e5b0c401c8d93182e9f0ce6f0de81f7574f5aca 29-Oct-2016 cushon <cushon@google.com> Initial type annotation support

Handle binding of type annotations, evaluation of type annotation
arguments, and lowering to bytecode for all type annotations kinds that
can appears in headers.

Currently type annotations are identified syntactically, we need to read
@Target to deal with ambiguous declarations on fields and method return
types (e.g. `@A int x;` could be `TYPE_USE` or `FIELD` or both).

MOE_MIGRATED_REVID=137566512
/external/turbine/java/com/google/turbine/binder/CanonicalTypeBinder.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/CanonicalTypeBinder.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/CanonicalTypeBinder.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/CanonicalTypeBinder.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/CanonicalTypeBinder.java
4c1981b86b09d9802ce3f773c059c529546048a5 06-Oct-2016 cushon <cushon@google.com> Type canonicalization

Canonicalize qualified type names so qualifiers are always the declaring
class of the qualified type. For example, given:

```
class A<T> { class Inner {} }
class B extends A<String> {}
```

The type name `B.Inner` must be canonicalized as `A<String>.Inner` in bytecode.

MOE_MIGRATED_REVID=135300804
/external/turbine/java/com/google/turbine/binder/CanonicalTypeBinder.java