Age | Commit message (Collapse) | Author |
|
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
|
|
Bug 24538724
Change-Id: I39a72fd701abf9d2368d2a0a7fc5a4c1ac63c0a0
|
|
This also uses a non-arbitrary ordering for name clashes.
Bug 24407912
Change-Id: Ibd96adfb979af86370889acb7b60c1b6953b190d
|
|
|
|
Bug 23818442
Allow padding to accept dimen resource values.
Allow spinner:entries to accept List values.
Change-Id: I48367ce6c87388d1d9b89e6c835304e031ff50c7
|
|
Release versions of the gradle plugin and annotation processor
now contain all of their dependencies, repackaged.
Change-Id: I93fba3eed150aafa8a88d439103b90d270e71cdf
|
|
@{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
|
|
Bug 23490384
Change-Id: I691da60a671d15c73cf2753ff830f9effb360e96
|
|
|
|
Bug 23498104
Change-Id: I8de149e573721485b916ae6ae692113f3ed2990d
|
|
Bug 23491360
Change-Id: I94c62b67dfa8f8bd4c7f9fb5ab1adff4a927f77b
|
|
Bug 23147420
Change-Id: I1f18ec7d8928ec7c65fdc75a5e1914b0cce608d7
|
|
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
|
|
Bug 22957226
Change-Id: Ia08bcb857872eccad3340c14b8d10b78198b90a6
|
|
Bug 22957203
Some conditional expressions were not waiting for all of their
dependencies to be evaluated before evaluting the expression.
Change-Id: Id449c8819b8dc0301a7ab893002478914780d480
|
|
Bug 22389109
Change-Id: Iec63375c5412edc03b4808ee129a7596b61bf9e6
|
|
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
|
|
We got some feedback where people want to keep their View presenter
classes parcelable. This CL makes observables parcelable and
their lists transient to allow this.
Bug: 21785040
Change-Id: I76adc7d7ca3876c83fd8749f6dbcf02a926c97c2
|
|
Bug 21594573
When a binding adapter takes old values, the old values
are stored in the generated binding as fields.
Change-Id: Ib163d74720a8199d70ff6884d59fbe4e0d17fece
|
|
|
|
Fragment data binding is much more complex than the previous
implementation supported. It may be that we don't want to support
data binding to fragments because fragment life cycle differs
from View life cycle, including back stack support.
I made it so that fragments with IDs do not get public final
fields on the generated data binding objects.
Bug 21667601
Change-Id: Ief77972ea854f7ded5a93aa59822d76ef533fc21
|
|
This CL fixes a bug where if a field is prefixed w/ one of our private
field conventions, we would not be able to find it because we would
strip it.
Now, when searching fields, we'll also look for exact match as we
do for methods.
Bug: 21807334
|
|
|
|
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
|
|
Bug 21667601
Change-Id: I636dec1bbb5567d70a996e115e6bf8322c3aa29d
|
|
Bug: 21571818
Change-Id: Id03c7a7de6e39d7f59da6cda11d3311f072addd0
|
|
|
|
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
|
|
Bug 21277338
Handle <T> adapter(View, T value)
Also test and fixes to support View<T> with multi-attribute
adapters.
Change-Id: I12bda5b235111762b55357fed7f163ccaf83838d
|
|
When a View is generic (e.g. MyView<T>), and a setter takes
a generic parameter, the setter parameter didn't match the
argument.
Change-Id: I115ace5582b847bda792d75cf7aaf57ffc8bd4cd
|
|
Bug 20977114
|
|
|
|
Bug: 19800022
Change-Id: I40c4ac72f24f965db12fd1c7dec6591184160ae5
|
|
Bug: 20725703
Change-Id: I198cc320cd0ac58afc2c5017ed160b1441a9009d
|
|
Bug 20350624
|
|
Change-Id: If9ddfd09d7becc504741b8dd4f91332de944bfe1
|
|
Bug 20075584
Change-Id: I2f9db60d1cc921451ada31529e28a4f33526a9ef
|
|
This CL fixes an issue about ternary expressions where
a ternary expression would be evaluated with its last
evaluated dependency. This would create a problem where
ternary expressions would not be evaluated if other branch
of the conditional is chosen, This bug is fixed by checking
outher flags such that we'll still calculate it together
if all dependencies are behind the same flag vs we'll
calculate it independently if its dependency flags are different.
This CL also improves the generated code in two ways:
- When there is an if inside if, we don't add flag check (the if)
if all of its conditions are covered in the parent if.
- I replaced flag names with binary values. This looks more
readable then generated names.
Bug: 20073197
Change-Id: I9d07868206a5393d6509ab0a205b30a796e11107
|
|
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
|
|
|