• Home
  • History
  • Annotate
  • only in /frameworks/data-binding/compiler/src/main/java/android/databinding/tool/expr/
History log of /frameworks/data-binding/compiler/src/main/java/android/databinding/tool/expr/
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
xprModel.java
esourceExpr.java
f58c3bd412f9bdc5ec589fdcfed470889abb6ea6 26-Mar-2016 Yigit Boyar <yboyar@google.com> Fix expression evaluation problem

This CL fixes a bug in expression evaluator where we would
elevate a conditional dependency by mistake when it is not
read completely. This was caused by marking bit paths as
read in the same cycle.

There is still a potential bug in the code path where we
detect a variable would've already been calculated for a
dependency to be calculated (e.g. a ? a : b) but this
change is a fairly safe compared to making a big change
in that logic.

Bug: 895468
Change-Id: I60a704a59c3b5b8e4f833f060c6233d356dab6c8
xpr.java
xprModel.java
11df39c91611b9ff2d7c87a9a9829251a015bccf 16-Mar-2016 George Mount <mount@google.com> Added simple inverted String conversion.

When binding a primitive to an EditText, a common
pattern is to use '@{"" + value}'. This, however,
doesn't allow for a two-way data binding expressions.
To mitigate the need for conversion functions, a simple
inversion for this expression wsa implemented that
just converts value from a String when possible.

This CL also fixes a bug in which a method matching
the first parameter was always chosen, reguardless of
the second and further parameters.

Change-Id: I36828d9f54d2073965358fceb140b2d5e6328919
athExpr.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
xprModel.java
ieldAccessExpr.java
istenerExpr.java
ethodBaseExpr.java
ethodReferenceExpr.java
bservableFieldExpr.java
bb4a033fcd5cd20e5be46ef8ead442dc7db2454d 18-Feb-2016 George Mount <mount@google.com> Have two-way binding use localized variables to prevent NPE.

Bug 26962999

Two-way binding was using the inverted expressions directly
without localizing variables. That meant that if there was
a variable set to null during evaluation, it may get a
NullPointerException even though it checked for null
on the value previously. This CL localizes the variables
so that cannot happen.

Change-Id: Ia55955ce0f1cb750e6a678e72e0cda03f0e3c9b6
rgListExpr.java
itShiftExpr.java
racketExpr.java
uiltInVariableExpr.java
allbackArgExpr.java
allbackExprModel.java
astExpr.java
omparisonExpr.java
xpr.java
xprModel.java
ieldAccessExpr.java
ieldAssignmentExpr.java
dentifierExpr.java
nstanceOfExpr.java
ambdaExpr.java
istenerExpr.java
athExpr.java
ethodCallExpr.java
bservableFieldExpr.java
esourceExpr.java
taticIdentifierExpr.java
ymbolExpr.java
ernaryExpr.java
woWayListenerExpr.java
naryExpr.java
iewFieldExpr.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
xprModel.java
roupExpr.java
09f8e10e2a49a075da8bb2f64853377c5e37045a 17-Feb-2016 Yigit Boyar <yboyar@google.com> Allow ObservableFields to be Bindable.

This CL fixes a bug where if a field/accessor is Observable and
Bindable, it would not be assigned a BR id, resulting in
malformed generated code.

Bug: 26922185
Change-Id: Ia3d11204460fc1967f0a7b60ed7cba1d3698098d
ieldAccessExpr.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
racketExpr.java
allbackArgExpr.java
allbackExprModel.java
xpr.java
xprModel.java
ieldAccessExpr.java
dentifierExpr.java
ambdaExpr.java
athExpr.java
ethodCallExpr.java
ymbolExpr.java
ernaryExpr.java
af146d6a8c0efcf5682d14047c06866a5548f78f 22-Jan-2016 Yigit Boyar <yboyar@google.com> Update data binding to kotlin beta 4

I've also run some cleanup inspections to keep codebase
more up to date.

Bug: 26738574
Change-Id: I02aa43157cad858c0ea60dd41a22150e3cf2cfa1
racketExpr.java
ersionProvider.java
99d74030fe5856572bd4b569bc04d2a11258f202 14-Jan-2016 George Mount <mount@google.com> Fixed warning when using a color resource.

Bug 26254496

Change-Id: Ied6b942fada3a99ec331ad59f2f5ee6e6c33a20b
esourceExpr.java
d3f2b9229472c9dae9bf4ae8b3e2d653b5653b01 17-Sep-2015 George Mount <mount@google.com> Two-way binding

Bug 1474349
Bug 22460238

This adds two-way data binding for those attributes
on Views that also have event listeners for them.
General use is also supported, but event listeners
are required to notify when those properties change.

Change-Id: Iedc66a604257930265f9d661f69658a0a0c3208b
rgListExpr.java
itShiftExpr.java
racketExpr.java
uiltInVariableExpr.java
astExpr.java
omparisonExpr.java
xpr.java
xprModel.java
ieldAccessExpr.java
roupExpr.java
dentifierExpr.java
nstanceOfExpr.java
istenerExpr.java
athExpr.java
ethodCallExpr.java
esourceExpr.java
taticIdentifierExpr.java
ymbolExpr.java
ernaryExpr.java
woWayListenerExpr.java
naryExpr.java
iewFieldExpr.java
90004de4330158be2351b9e26ba951f2ccbccfce 14-Nov-2015 George Mount <mount@google.com> Don't use DynamicUtil now that 1.0-rc5 has been released.

Change-Id: I017049ba3fb3c0d66982f504192d6a2814859f9a
esourceExpr.java
59229481aec5a284d322a2ca80dff836485feb0c 30-Oct-2015 Yigit Boyar <yboyar@google.com> upgrade kotlin to 1.0-beta1

Change-Id: I62b77fd118e2715d272a16d96b9083d2347f5fb1
xpr.java
dentifierExpr.java
istenerExpr.java
9784c9aaedeb863018f5fcaa0a598e8e2f8ed2f3 13-Oct-2015 Yigit Boyar <yboyar@google.com> Data binding as studio dep + java6

This CL gets rid of the gradle plugin and instead provides
DataBindingBuilder for the gradle plugin to directly use.

Now, everything that is deployed via SDK Manager (lib and adapters)
are included as prebuilts so that we avoid accidently changing
them w/o an SDK manager release.

There is still work to do:
> re-enable proguard for externel dependencies
> release a batch to ensure everything works

Bug: 22516688
Change-Id: I83ace15bd6d3d23bf5b4ad850f36453dd23ebd43
uiltInVariableExpr.java
xpr.java
xprModel.java
dentifierExpr.java
istenerExpr.java
ethodCallExpr.java
esourceExpr.java
ymbolExpr.java
ernaryExpr.java
bdc7aa8269502b3fc3ce73c124e4f1b2092502c9 23-Oct-2015 George Mount <mount@google.com> Use a dynamically-generated class to relax requirement to upgrade.

We may need some static methods between releases and instead of
requiring a release, we can now supply the methods as a dynamically
generated class, DynamicUtil

Change-Id: I9d53ae99b4b5717cd4780efdcb7a3f85bfac8dd9
esourceExpr.java
da97a54b679e19f4f40e23d290816093870956af 19-Oct-2015 George Mount <mount@google.com> Merge "Load drawables using the theme when necessary." into studio-master-dev
88ce44ccc65e74a8553244ca246cc9f4c48483e0 15-Oct-2015 Yigit Boyar <yboyar@google.com> Create BR id from Callable

This CL fixes a bug where if an expression maps into a method
with a different name, we would create the BR id from the
expression instead of the referenced method.

Bug: 24973950
Change-Id: Ia57c31d926a737c9fc84775780aeb5e617769d43
ieldAccessExpr.java
ethodCallExpr.java
d0bb3f1e1a94747bb3dd8bd2fee315d8816f0f5d 14-Oct-2015 George Mount <mount@google.com> Load drawables using the theme when necessary.

Bug 24936186

Drawables could be loaded from themed resources as of L (v21),
so the Theme should be used to load those resources.

The same is true for ColorStateList in M (v23).

Change-Id: I3e6d7a55ff7fe744ed872f83f550abfb018a3df8
esourceExpr.java
09aeb26073fc8a98263806f53e44819ebe5046c6 09-Oct-2015 Yigit Boyar <yboyar@google.com> Handle constant predicate in ternary

If a ternary expressions's predicate is constant, we would never evaluate it
which means we would never evaluate the ternary unless some other expression
depends on it.

This CL changes ExprModel to move such constant expressions into pending list
so that they can be evaluated + necessary flags are set.
We can actually avoid this process by replacing TernaryExpression with something
else when this case is detected but that would be a bigger change and not safe
shortly before the release.

Hopefully, codegen logic will be refactored into a more well defined process.

Bug: 24768154
Change-Id: I0918568414b64d64f070978f1f8e77cc3b6c85fd
xpr.java
xprModel.java
ernaryExpr.java
7c1b078ca84336caba7f811709836562bd5550d6 17-Sep-2015 George Mount <mount@google.com> Add context as an automatic variable.

Bug 24136218

Change-Id: I0996ac8d3b42d29fbfe1c14da1343e05954c3bef
uiltInVariableExpr.java
xprModel.java
76b791f78542a2feb191482a2204de95eaf8ee72 04-Sep-2015 George Mount <mount@google.com> Better handling of out of bounds exceptions on bracket expressions.

Bug 23820607

Handle out of bounds in bracket expressions by returning the
default value.

Change-Id: I8b3a5a5ced48acfd6683ee1df6264480526244d1
racketExpr.java
eebcbdd5d35e56a2c8ef37feeb65df46130d001d 26-Aug-2015 Yigit Boyar <yboyar@google.com> Fix the bug about marking expressions as read early

@{obj4.text}
@{obj4.useHello ? obj4.text : `hello`}

This case was broken and would not re-read obj4.text if
only obj4.useHello is invalidated. It was partially fixed in
Change-Id: Id449c8819b8dc0301a7ab893002478914780d480 but
but it was bringing it down to exact equality which would
mean we could fail to mark sth as read.

The coverage logic we use in expressions when marking them
as read was giving false positives, which results in
marking expressions as read before they are fully read.
This CL fixes that bug. The safe fix introduces some false
negatives when a conditional is behind another conditional.
We can address this post v1.

There was also another bug about setting conditional flags
even though the ternary does not need to be calculated.

@{obja.boolMethod(a)}
@{a ? objb.boolMethod(b) : objc.boolMethod(c)}

When obja is invalidated, it would re calculate the second
binding expression too even though it is never used (because
that expression is not invalidated). The re-calculation would
happen because we would calculate the value of `a` and set
the conditional flags w/o checking invalidation.

This would result in unnecessary calculations. I've also fixed
it for first degree where the ternary is not under another
ternary. The proper fix would requires bigger effort, post V1.

bug: 22957203
Change-Id: Ib73f31eac358f2ad7652395a021baaa93b79adf7
xpr.java
xprModel.java
23910cf498c35704a03ba4f3889de2ab97ccbe21 25-Aug-2015 George Mount <mount@google.com> Make setVariable return true for declared variables.

Bug 23518718

Change-Id: Ic147421aefe0adbf576285ca642334fcb907abfb
dentifierExpr.java
e0d5ed7613cb72192430cd2ed8e4159618ca308e 25-Aug-2015 George Mount <mount@google.com> Fix NPE when evaluating bracket expressions.

Bug 23498104

Change-Id: I8de149e573721485b916ae6ae692113f3ed2990d
racketExpr.java
91beb3a1a89a58b1c0b6b874d889394a3be90b6c 06-Aug-2015 George Mount <mount@google.com> Fix ternary operator with null assigned to listener.

Bug 22907244

When finding a common type, null is an Object and
the listener is an interface, so the types don't
match.

Change-Id: I0c5a88ec02230767b894b2feda17a1a1c8cef9f7
ernaryExpr.java
793e979f25e190162eacf46d6a4efc3efc1d2f91 31-Jul-2015 George Mount <mount@google.com> Support different event handlers having different API levels.

Bug 22957226

Change-Id: Ia08bcb857872eccad3340c14b8d10b78198b90a6
xpr.java
xprModel.java
ieldAccessExpr.java
istenerExpr.java
e52882df6130221462bf07f5f2b52de5c4b0f8de 30-Jul-2015 George Mount <mount@google.com> Move toCode to Expr classes.

It turns out that toCode as part of Java is just
about as readable as in kotlin and it makes much
more sense than using instanceof (equivalent).

Change-Id: Ic2a0de5c4376dafa487d048e6a9420fab9e7f22a
rgListExpr.java
itShiftExpr.java
racketExpr.java
astExpr.java
omparisonExpr.java
xpr.java
ieldAccessExpr.java
roupExpr.java
dentifierExpr.java
nstanceOfExpr.java
athExpr.java
ethodCallExpr.java
esourceExpr.java
taticIdentifierExpr.java
ymbolExpr.java
ernaryExpr.java
naryExpr.java
d615f15f0f0cc4c4de7570119d181e13d44e708a 05-Aug-2015 George Mount <mount@google.com> Fixed: conditional expression not always waiting for its dependencies.

Bug 22957203

Some conditional expressions were not waiting for all of their
dependencies to be evaluated before evaluting the expression.

Change-Id: Id449c8819b8dc0301a7ab893002478914780d480
xpr.java
731b74f7f44e67312a1fc4161c4e0aae221b2417 25-Jun-2015 Yigit Boyar <yboyar@google.com> Introduce Scopes to track logical stack traces

This CL introduces a static class called Scope, which is
used the logical processing stack for data binding.
These scopes are used to generate meaningful error messages
when an error is detected.

Bug: 21953001
Change-Id: I5470a8c4ad94401d34a140762baae9d53c5a0402
racketExpr.java
xpr.java
ieldAccessExpr.java
roupExpr.java
dentifierExpr.java
ethodCallExpr.java
naryExpr.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
xpr.java
xprModel.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
itShiftExpr.java
racketExpr.java
astExpr.java
omparisonExpr.java
xpr.java
xprModel.java
ieldAccessExpr.java
dentifierExpr.java
nstanceOfExpr.java
athExpr.java
ethodCallExpr.java
esourceExpr.java
ymbolExpr.java
ernaryExpr.java
naryExpr.java
0c2ed0cbaee2f206e926bfc780b05e9f1e52b551 24-Jun-2015 Yigit Boyar <yboyar@google.com> Remove guava dependency from the plugin

This CL is the first step in getting rid of guava dependency.
It removes guava from compilerCommon which in return removes
the dependency for the gradle plugin.

This CL also fixes compiler tests which were broken by the
listener CL.

Bug: 22047836
Change-Id: I43f87885c5291174f5bc694487fc6c075b480194
xprModel.java
716ba89e7f459f49ea85070d4710c1d79d715298 18-Jun-2015 George Mount <mount@google.com> Support calling listener methods without interfaces.

Bug 21594573

It is convenient to be able to assign event listeners by just
referencing a method, similar to the way onClick="handler" works.

This adds a whole lot of listeners for the framework. Additional
listeners must be added for support library components.

This isn't perfect in resolving listeners. Perfect resolution
requires that each expression is evaluated in its own context
within the binding statement. If, for example, the same method
name is used for a listener and an accessor, we will assume
that the listener is used always and there will be a compilation
failure.

Change-Id: If4705122b67a451430451b6e7d890eb813af1c5c
xpr.java
xprModel.java
ieldAccessExpr.java
ec2f3896c21a504b464bf591cdb45b62692b6760 10-Jun-2015 Yigit Boyar <yboyar@google.com> Improve static method / field handling

Previously, we would allow access to static fields via instance
variables but it would not work for methods. Moreover, the behavior
was not exactly the same with how java handles it. In java, the
instance can be null but our binding code would not evaluate it
if instance is null.

This CL fixes these bugs by adding static resolution support to
methods and replacing their variable identifiers with static
identifiers while the method is being resolved so that the rest
of the system is still consistent.

Bug: 20412284
Change-Id: Id97ce564c312b97d5a0e60d7d7a5bbd06b131071
xprModel.java
ieldAccessExpr.java
ethodCallExpr.java
c4a07bddb4dd5c3bfbecf4d87909c5b447ae56dc 05-Jun-2015 George Mount <mount@google.com> Only create case statements for Bindable attributes.

Bug: 21571818
Change-Id: Id03c7a7de6e39d7f59da6cda11d3311f072addd0
ieldAccessExpr.java
24ff3c01534a5e4dc9f65796009debe7fd87c1be 20-May-2015 Yigit Boyar <yboyar@google.com> Merge "Handle inter-expr dependencies properly"
7b07818f07c28c6dec34ca2a9ab5f61e86afb493 20-May-2015 Yigit Boyar <yboyar@google.com> Handle inter-expr dependencies properly

We had a bug where we would never be able to solve a case if there
are two expressions that trigger a circular dependency.

a ? b : c
b ? a : d

We actually had some logic to partially elevate conditional
dependencies but there were two issues with it:

* LayoutInflator was caching shouldReadFlags permanently
* There was a bug in how we resolve whether all potential evaluation
paths are covered. (we were not using a cloned bitset but rather
updating the original).

I've fixed these two issues and added logic to partially elevate
conditional expressions if they cannot be marked as fully read.

Bug: 21324645
Change-Id: I779afb6dae48920196404d3cfbb5f8774686404d
xpr.java
xprModel.java
ersionProvider.java
c96847768305d83c6bc4919432af9bd9bfe4c08e 20-May-2015 George Mount <mount@google.com> Fix String.format expression.

An expression @{String.format("%s", "test")} was failing
for two reasons: the L.d was doing string concatenation
and String wasn't imported and considered a StaticIdentifier.

Change-Id: I67b4c880f1e147a5c1aac15b3b845d4112c6d00b
xprModel.java
8533f27db6c31b0c295ae62d314dbf07ea640571 19-May-2015 Yigit Boyar <yboyar@google.com> Properly handle constant binding expressions

Previously, we would assign each binding expression a flag id even
if it is constant. This was necessary to be able to implement
invalidateAll.

Later, we've changed how invalidateAll works and assigned it a separate
flag. Unfortunately, we were still incrementing ids for such binding
expressions, causing index out of bounds exceptions during code generation
in certain situations.

This CL fixes that bug and does not add flags to constant binding expressions
anymore.
Bug: 21284295
Change-Id: I114bf34520d0b246426ce7d45b8c511cf6709778
xpr.java
xprModel.java
e9b33bac04bb1ce1444d7f1744fcec1ecd3a57da 30-Apr-2015 Yigit Boyar <yboyar@google.com> Support multi-param adapters in code generation

Bug: 19800022

Change-Id: I40c4ac72f24f965db12fd1c7dec6591184160ae5
rgListExpr.java
xpr.java
xprModel.java
ieldAccessExpr.java
d1369ca2b7114fa456293695f3850e5be5e6d21e 23-Apr-2015 Yigit Boyar <yboyar@google.com> Add placeholder flag for invalidate any
xpr.java
xprModel.java
658c71b9ba3211ac5c10f261a8c6f38b1916d3bf 22-Apr-2015 Yigit Boyar <yboyar@google.com> Fix invalidate any flag.

This CL also adds a new build target to move folders to an EAP folder that
can be shipped to early access partners.
I've also changed the demo to use android emojis
xprModel.java
11e3c78221d957e86be098255ccd0f8f28280cff 20-Apr-2015 George Mount <mount@google.com> Merge changes If9ddfd09,I310535e6

* changes:
Support array length.
Added some missing expressions.
c6bcb7bf9cab139b3141c4644e5b3267deed5213 20-Apr-2015 George Mount <mount@google.com> Added some missing expressions.

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

Change-Id: I310535e67c8fda2f067a62079e1b609a11bda741
itShiftExpr.java
xprModel.java
nstanceOfExpr.java
naryExpr.java
019c36b97c7c172ac03997f6bf170e65b2ed7fe4 17-Apr-2015 Yigit Boyar <yboyar@google.com> Fix how final fields are handled

There was a bug in Expression analyzer where if a field is final,
it would return dynamic=false although its parent is dynamic.

This CL changes that behavior such that if the parent of a field
access is dynamic, then field access is dynamic unless it is
static & final.
If parent is not dynamic, (e.g. android.view.View) field is
dynamic if an only if itself is dynamic.

This CL also fixes another bug where if you have a bunch of
expressions none of which can be invalidated, there would not
be any flags to set thus we would not generate proper if statements.
We were resolving tree properly but code-generation never worked
in that situation. To overcome this issue, since there should always
be a way to invalidate all bindings, I've added a flag to invalidate
all, which is automatically included in each invalidate flag set.
This does not bring any serious cost because we have flag inheritance
in the generated code.

I've also removed some code from LayoutBinderWriter that may create
duplicate names. This was failing a test where a variable and View
were given the same names. I changed these name uniqueness to be
scope based so that we can create most readable w/o sacrificing
correctness.

Bug: 20341011
Change-Id: I0e98a5e28f250c36ae5de306f5ed99adffd20b59
xpr.java
xprModel.java
ieldAccessExpr.java
ethodCallExpr.java
96e1c821dd446d1ed78f8ae61131550588f60a24 10-Apr-2015 George Mount <mount@google.com> Support merge tags.

This also drops the requirement for include tags to have an ID.

Each root view tag is given a numeric suffix, starting with 0.
Merge tags can have multiple roots, the first of which always
is suffixed with 0. The remainder have tag identifiers that
are interspersed with the tags used with expressions. The
numeric suffix is used to identify the View in the mapBindings
call.

Include tag information now uses the tag of its parent so that
its parent will search for the includes within it. When
mapBindings is looking at the parent, it looks for all direct
children with the appropriate tag of the format "layout*/name_0".
Then it searches for all siblings with the same prefix and different
numeric suffixes. Any that are found are considered part of the
same merged include. If it finds another with _0, it knows that
a new include was found.

Change-Id: Idd1144d9037648193724667320744bd079791476
ymbolExpr.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
xpr.java
xprModel.java
fead9ca09b117136b35bc5bf137340a754f9eddd 23-Mar-2015 George Mount <mount@google.com> Move to package android.databinding.
racketExpr.java
astExpr.java
omparisonExpr.java
ependency.java
xpr.java
xprModel.java
ieldAccessExpr.java
roupExpr.java
dentifierExpr.java
athExpr.java
ethodCallExpr.java
esourceExpr.java
taticIdentifierExpr.java
ymbolExpr.java
ernaryExpr.java