summaryrefslogtreecommitdiff
path: root/compiler/src/main
AgeCommit message (Collapse)Author
2016-05-05Fix problem where root View's style is used instead of bound View'sGeorge Mount
Bug 27808662 Change-Id: I870b0db47e3ed970a3bd67e602e873e503610028
2016-04-11Move to org.antlr from tunnelvisionYigit Boyar
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
2016-03-28Fix expression evaluation problemYigit Boyar
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
2016-03-17Added simple inverted String conversion.George Mount
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
2016-03-08Support for java 8 method reference syntax.George Mount
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
2016-03-08Have two-way binding use localized variables to prevent NPE.George Mount
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
2016-02-23GroupExpr is unnecessary.George Mount
The grouping happens at parsing time, so grouping as part of the expression model is unnecessary. It can be inferred. Change-Id: I10c617516741b9ff8115144d51fcadcd2f8b87d6
2016-02-16Allow ObservableFields to be Bindable.Yigit Boyar
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
2016-02-16Lambda In da houseYigit Boyar
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
2016-01-22Update data binding to kotlin beta 4Yigit Boyar
I've also run some cleanup inspections to keep codebase more up to date. Bug: 26738574 Change-Id: I02aa43157cad858c0ea60dd41a22150e3cf2cfa1
2016-01-20Update Kotlin code to be beta 4 compatibleTor Norbye
Change-Id: I96ab85fd9ec3d857929055b804fd094a4e3d245c
2016-01-15Fixed warning when using a color resource.George Mount
Bug 26254496 Change-Id: Ied6b942fada3a99ec331ad59f2f5ee6e6c33a20b
2016-01-13Two-way bindingGeorge Mount
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
2015-12-22Change from commons-lang3 to guavaDeepanshu Gupta
Change-Id: I1a18e06af7bf2d65228f1491663b6e096a9538ed
2015-12-16Add modules definitions.Deepanshu Gupta
These are referenced by the tools/idea project. Also, some minor code improvments. Change-Id: Ia1f6a80c257b9022a2efda553ccc9096e03edc00
2015-12-04Avoid re-reading variables.Yigit Boyar
This CL fixes a bad code generation where we would set a variable to itself, which breaks if you use a tool like ErrorProne. I've also updated gradle version and data binding versions. Bug: 25077399 Change-Id: I6620faf4cad5fa74dc7c35be03c46c4a76c9cfbc
2015-11-16Merge "Don't use DynamicUtil now that 1.0-rc5 has been released." into ↵George Mount
studio-master-dev
2015-11-14Load intermediate files as InterfaceYigit Boyar
Change-Id: I6e07443d7d51eaad0d655f4fcd2e3e43ef14bdc8
2015-11-13Don't use DynamicUtil now that 1.0-rc5 has been released.George Mount
Change-Id: I017049ba3fb3c0d66982f504192d6a2814859f9a
2015-11-11Override layout file metadata from moduleYigit Boyar
If a layout file is inherited from a module but also exists in the app, w~e force the app version to the metadata of the module version. This means forcing its created class location to be the same as the module. This usually happens when gradle or aapt generates some layout during app compilation. Bug: 25369165 Change-Id: I5d2002ac04d16cfe9935fe5580548344b19b4aca
2015-11-05upgrade kotlin to 1.0-beta1Yigit Boyar
Change-Id: I62b77fd118e2715d272a16d96b9083d2347f5fb1
2015-10-30Add targetSdk check for DynamicUtil.George Mount
Change-Id: I271b3fc364c2d8689f22e0555174a8ca30bc04b5
2015-10-30Revert "Revert "Update notice""Yigit Boyar
This reverts commit f5517fe4100cc751b365edb43a07455b7b435215. Change-Id: Ic60d99c9a9508dbd912a67fa2d467e7332c51dfb
2015-10-30Revert "Update notice"Yigit Boyar
This reverts commit 0a39d327fc5dedb0a766f1ad44d7b1fc7048ef84. Change-Id: I72fad57691ac1fb1f74ccdd82d61d16b0b52e435
2015-10-30Update noticeYigit Boyar
Change-Id: I3d5e2a07075603fbc2ee9b6c93490f6ea2d7c594
2015-10-28Data binding as studio dep + java6Yigit Boyar
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
2015-10-23Avoid deprecation warnings in DynamicUtilYigit Boyar
Change-Id: I2c7b5321bdfc7e3932a691cf724b9bd79edff471
2015-10-23Use a dynamically-generated class to relax requirement to upgrade.George Mount
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
2015-10-19Merge "Load drawables using the theme when necessary." into studio-master-devGeorge Mount
2015-10-16Create BR id from CallableYigit Boyar
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
2015-10-14Load drawables using the theme when necessary.George Mount
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
2015-10-08Handle constant predicate in ternaryYigit Boyar
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
2015-10-08Merge "Fix tag check in data binding mapper" into studio-master-devYigit Boyar
2015-10-07Fix tag check in data binding mapperYigit Boyar
This CL fixes a bug in data binding mapper where if the View's tag does not match one of the expected tags, it would fall through to the ext case statemet which would result in a meaningless error. This CL detects the case and throws an exception. This case should not happen since it is not a supported case but happened here due to another bug Bug: 24745000 Change-Id: Ic5c6d4ce2da6ad043fb6fe56cd0847c98ea2472d
2015-10-07Report syntax errors even though Antlr can recoverYigit Boyar
This CL makes Antlr parser more strict by not allowing errors. Antlr usually tries to recover from these errors but thats not what we really want for this use case. This CL also updates version codes to rc4 since rc3 is already out. Change-Id: I0d305e06a6cdcbae2f37573c3c6ae4233cdd7958
2015-10-05add kotlin prebuilts licenseYigit Boyar
Change-Id: I10c41d5b9edc1312000b6cfbfc5b481dd72f031c
2015-10-05Fix error processing XML when german character is used.George Mount
Bug 24507894 The character set was not being properly detected for the XML file when it was being loaded, so it was always using the default character set. For Windows, this turned out to be something other than UTF-8. Now, a library is used to detect the character set before parsing. Change-Id: I2ea041701de59f0e72fd18288b0f62cb2beb74e6
2015-10-05Merge "Fix resolving listeners for multi-attribute binding adapters." into ↵George Mount
studio-master-dev
2015-09-30Fix resolving listeners for multi-attribute binding adapters.George Mount
Bug 24538724 Change-Id: I39a72fd701abf9d2368d2a0a7fc5a4c1ac63c0a0
2015-09-29Merge "Load full SDK table" into studio-master-devYigit Boyar
2015-09-29Load full SDK tableYigit Boyar
When loading methods from the SDK, we would only load methods that have since > Application.minApi. This way, we would keep the hash very small. On the other hand, this algorithm break if a newer API version adds a method that has the same signature with a subclass. This case happened when we added setForeground to View at API 23 but it has been in FrameLayout since 1. Bug:24509802 Change-Id: I7ac7ca5d1aac142a9afe8cd57ab9497dfb649650
2015-09-29Bring all instance BindingAdapters into Component.George Mount
This also uses a non-arbitrary ordering for name clashes. Bug 24407912 Change-Id: Ibd96adfb979af86370889acb7b60c1b6953b190d
2015-09-29Merge "Add context as an automatic variable." into studio-master-devGeorge Mount
2015-09-28Remove log methodYigit Boyar
Change-Id: I92a80a21ef5f466e84b22c3bbf1132ea56819f4b
2015-09-25Add context as an automatic variable.George Mount
Bug 24136218 Change-Id: I0996ac8d3b42d29fbfe1c14da1343e05954c3bef
2015-09-18Upgrada kotlin to m13Yigit Boyar
Change-Id: Iec30be0e153f7354d4909970be4292fcf11988bf
2015-09-11Fix local buildsYigit Boyar
This CL fixes local builds where some deps were not downloaded but they were coming from maven (by mistake). Bug: 24000910 Change-Id: Id188b30a6ac94c14e382dcedab1906bfb7a7e4f0
2015-09-10Shift Long in FlagSet instead of int :/Yigit Boyar
Bug: 23979611 Change-Id: I7825a718dddd1c15d598f19a4fe8722ddc5a5763
2015-09-08Merge "Fat jars and jarjars" into studio-master-devGeorge Mount
2015-09-08Fat jars and jarjarsGeorge Mount
Release versions of the gradle plugin and annotation processor now contain all of their dependencies, repackaged. Change-Id: I93fba3eed150aafa8a88d439103b90d270e71cdf