[GRADLE-2163] AsmBackedClassGenerator.addGetter is not adding convention backed method for get<Property>() for boolean properties Created: 12/Mar/12  Updated: 04/Jan/13  Resolved: 14/Mar/12

Status: Resolved
Project: Gradle
Affects Version/s: 1.0-milestone-8a
Fix Version/s: 1.0-rc-1

Type: Bug
Reporter: Justin Ryan Assignee: Luke Daley
Resolution: Fixed Votes: 0


I was having a problem with Checkstyle.groovy, where the run() method calls getIgnoreFailures(), but it wouldn't pick up the convention value. Which, by the way, points to a flaw in the unit tests, since the test is checking the property while the code is calling the accessor, e.g. assert getIgnoreFailures() == true should be used instead of assert ignoreFailures == true.

A little tracking down, showed that while AbstractClassGenerator.generate is looping the metaClass.properties, it gets to a boolean property who's MetaBeanProperty.getter is named "is<Property>" which consequently gets generated with convention support in AsmBackedClassGenerator.addGetter. But Groovyc also generates "get<Property>" for boolean properties (GROOVY-2696), and this method is NOT being created in AsmBackedClassGenerator. Which means the compile is happy since the method signatures match up, yet it's just a plain accessor. And without a good unit test it goes unnoticed.

From what I can tell, Groovy generates the "get<Property>" method but doesn't expose it was a getter method via MetaBeanProperty. To work around it, AsmBackedClassGenerator.addGetter should look for this corner case and generate two identical methods.

Comment by Justin Ryan [ 12/Mar/12 ]

If someone can confirm my logic, I can submit a pull request tomorrow.

I should mention that this effects all boolean conventions where the "get<Property>" method call is used. I can vouch that this includes Checkstyle, CodeNarc and PMD.

Comment by Justin Ryan [ 14/Mar/12 ]

Working pull request made: https://github.com/gradle/gradle/pull/72

It includes test and code.

Generated at Wed Jun 30 12:14:24 CDT 2021 using Jira 8.4.2#804003-sha1:d21414fc212e3af190e92c2d2ac41299b89402cf.