History log of /frameworks/data-binding/compiler/src/main/java/android/databinding/tool/ExpressionVisitor.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
78dc9ae6d67ae94bf3f637eeea0848e4f700b7a3 21-Apr-2016 George Mount <mount@google.com> Fix problem where root View's style is used instead of bound View's

Bug 27808662

Change-Id: I870b0db47e3ed970a3bd67e602e873e503610028
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/ExpressionVisitor.java
15b6682cf3505b117329e2190967c92a89b179e9 08-Apr-2016 Yigit Boyar <yboyar@google.com> Move to org.antlr from tunnelvision

We were using a version of antlr that is published by
tunnelvision which works fine but this becomes a problem
when another gradle plugin wants to depend on antlr as
well. It is best if we depend on the original one to
avoid conflicts with other libs.

Bug: 27175207
Change-Id: I0a87f9902361ace5dc6d03d838e2ad431c844de8
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/ExpressionVisitor.java
c0c1dab0b6254e4d27f18c37a72a9e7952e958a0 02-Mar-2016 George Mount <mount@google.com> Support for java 8 method reference syntax.

Bug 26937350

Our event handling syntax is obj.method, where java 8
uses the syntax obj::method. This adds support for
the java 8 syntax and adds a deprecation warning for
the old syntax.

Change-Id: Ideb0570c2646f674da031f642ed3369e8c5fcd3b
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/ExpressionVisitor.java
b522c7650bf7d9ec566845bc9eb37e761eea853d 23-Feb-2016 George Mount <mount@google.com> GroupExpr is unnecessary.

The grouping happens at parsing time, so grouping
as part of the expression model is unnecessary. It
can be inferred.
Change-Id: I10c617516741b9ff8115144d51fcadcd2f8b87d6
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/ExpressionVisitor.java
6047998943beebd81e0ae1068df39c0cbee38628 02-Feb-2016 Yigit Boyar <yboyar@google.com> Lambda In da house

This CL adds support for assigning callbacks to listeners using lambda expressions.
These expressions can receive either 0 or N arguments where N is equal to the
number of parameters in the callback function.

These expressions are evaluated when the callback is invoked. In other words, they
are independent from the rest of the ExprModel except the Identifier expressions.

Since these are limited to 1 full expression and they don't have any invalidation
flags; we use a verbose branching code generation mode where we calculate all possible
execution paths, eliminate trivial ones and generate the code. This allows callbacks
to be thread safe as well. See ExecutionPath class for details.
It is not efficient but since these are rere occasions, should be OK.

Callback expressions are still forced to be expressions that return value. To handle
`void` case, I've added `void` and `Void` as acceptable symbols. Also, if the callback
method returns void, the expression is free to return `void` or any other value.
¯\\_(ツ)_/¯

I've also moved kotlin to rc0. Although rc0 is unrelated to this task, it made more
sense to upgrade here because most changes it will ask for were already done in
this branch.

Bug: 26849440
Change-Id: I805b3d470f85df9c2ce3f3ed5ca74925a08bb7a5
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/ExpressionVisitor.java
4ba16229a40e9758db86d4fb1df5119fdcb8aa2a 22-Dec-2015 Deepanshu Gupta <deepanshu@google.com> Change from commons-lang3 to guava

Change-Id: I1a18e06af7bf2d65228f1491663b6e096a9538ed
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/ExpressionVisitor.java
c1560e6b00b398867da12fbdc5a1fcd1d50b801c 25-Jun-2015 Yigit Boyar <yboyar@google.com> Carry over location information from parser to annotation processor

This CL changes LayoutParser to use Antlr which provides us the location
information. This information is now serialized inside the bundle so
that we can read it in the annotation processor, enabling better error
logs with location information.

Bug:21953001
Change-Id: If9b5cf2f87598a609ddf77235decc17098a46a6b
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/ExpressionVisitor.java
2611838bffef5a009ca71e3e9e59a93f29b098ed 24-Jun-2015 Yigit Boyar <yboyar@google.com> Remove guava from compiler

This CL removes all dependency from guava and replaces it w/ either plain
java or some utilities.

Bug: 22047836
Change-Id: I94be54ed992ab6b5f27c47a8cf400ae60aef02f8
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/ExpressionVisitor.java
c6bcb7bf9cab139b3141c4644e5b3267deed5213 20-Apr-2015 George Mount <mount@google.com> Added some missing expressions.

unary: +/-/~/!
shift: >>/>>>/<<
logical: &&/||
bit: &/|/^
instanceof

Change-Id: I310535e67c8fda2f067a62079e1b609a11bda741
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/ExpressionVisitor.java
74f72d77b1db2b78ee6422da2ec94de12edcb6dc 27-Mar-2015 Yigit Boyar <yboyar@google.com> Fix bugs related to how we handle Ternary ops

This CL fixes two bugs.
1) When a Ternary operation was inside another operation, we were
not handling dependecies properly and model would think that
the container expression can be evaluated before Ternary is evaluated,
eventually causing an exception in code-gen because Ternay is not
calculated yet.

2) This also fixes another bug where when ?? is used, we would put
ifTrue and ifFalse statements in wrong order and eventually evaluate
!??.

Bug: 19939148

Change-Id: I3e1d2bee172e47412bb8ef9e7c785aef47337155
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/ExpressionVisitor.java
fead9ca09b117136b35bc5bf137340a754f9eddd 23-Mar-2015 George Mount <mount@google.com> Move to package android.databinding.
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/ExpressionVisitor.java