You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2019/11/05 22:33:21 UTC
[groovy] branch GROOVY-7996 updated (5a60495 -> 3a9b12a)
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a change to branch GROOVY-7996
in repository https://gitbox.apache.org/repos/asf/groovy.git.
discard 5a60495 GROOVY-8721, GROOVY-9015: Avoid calling ClassNode#getTypeClass()
discard cceb7f8 Avoid potential invalid syntax (#1067)
discard 0634480 minor edits
discard b6e193d refactor code
discard 30e149d sync with groovy-eclipse
discard 9a8879b Add more tests
discard 652954b GROOVY-8507, GROOVY-9301: support comma on last enum value in more cases
discard a883a25 GROOVY-9303: Bump javaparser to 3.15.4
discard a5f478d Refactor code
discard 4fa3a3e Minor refactoring: move `ModifierNode` to `org.codehaus.groovy.ast` (#1064)
discard d2ce017 Trivial refactoring: avoid redundant checks
discard a406de3 Trivial refactoring: avoid redundant operations on list
discard efb6a4a Trivial refactoring: remove unnecessary check and cast
discard afd3b01 Trivial refactoring: Can be replaced with `size() != 1`
discard e7ced3a Trivial refactoring: replaced with empty array
discard 7d72423 Trivial refactoring: Comparator combinator can be used
discard 3205209 Trivial refactoring: `Collections.sort()` can be replaced with `List.sort()`
discard e2ad847 Trivial refactoring: Anonymous type has shorter lambda alternative
discard 3c5577e Minor refactoring: 'while' loop can be replaced with 'foreach'
discard 55abd44 Minor refactoring: 'for' loop can be replaced with 'foreach'
discard c546fa3 Fix "java.lang.RuntimeException: No suitable ClassLoader found for grab" caused by refactoring
discard 82a9d78 Fix javadoc errors
discard c59eb27 Trivial refactoring: remove unused imports
discard 060d2c8 Trivial refactoring: Can be replaced with single 'Map.computeIfAbsent' method call
discard a6d8e34 Trivial refactoring: Can be replaced with single 'Map.replaceAll' method call
discard 37146c0 Minor refactoring: Lambda can be replaced with method reference
discard 6238063 Minor refactoring: Anonymous type can be replaced with method reference
discard 2b2e533 Minor refactoring: Anonymous type can be replaced with lambda expression
discard e91706c Trivial refactoring: cleanup `CachedClass`
discard 1f93e49 Refactor code
discard fa0d56c Tweak javadoc
discard aef5c2e Support better extensibility for caller class
discard 87fc5b6 Fix the caller class
discard a6965b2 Java 8 refactor
discard e00c513 Minor refactor: remove legacy code
discard 35259df Java 8 refactor
discard 2c98166 Minor refactoring: pull the implementation up to super class
discard 5065e83 Fix illegal access warning `java.util.Observable.changed`
discard cc1d277 Fix unchecked warning
discard 7f20ad3 Fix the hardcoded caller class
discard f44c4a2 Add one more test for `with` under STC mode
discard 096df8a Add a test for `with` under STC mode
discard 09d30f2 Prefer jars over class folders on the compile classpath
discard bb3574d GROOVY-9300: Bump gradle to 5.6.4
discard f20ca3a Refactor code
discard 2f6333f Show illegal access warnings without detailed messages.
discard d0d80eb GROOVY-9298: Eliminate some illegal access warnings when indy is enabled (#1058)
discard 16fa834 java 8 refacotor
discard 013c7d7 GROOVY-8457: use ClassHelper.make(Class) for resolved exception type
discard 81392b7 GROOVY-9257: ZipException, FNFE -> IOException, InvalidPathException
discard a39f06d refactor @NotYetImplemented AST transform
discard 08cf66c GROOVY-9297: Bump javaparser to 3.15.3
discard f373212 GROOVY-8517: add getNodeMetaData(Object,Function)
discard 5a864ee sync with groovy-eclipse
discard d6a556b Add a test for GROOVY-8223 (#1055)
discard c261b92 Trivial refactoring: remove redundant checks
discard 722caef Use `org.objectweb.asm.Opcodes`
discard 7456822 Java 8 refactor (closes #1053)
discard c945c39 Ensure reader is closed
discard c3abf8b Ignore test which fails for default builds but works for invoke-dynamic
discard c396c77 GROOVY-9195: SC: uniform treatment for "foo.bar" and "foo.with { bar }"
discard 491ea93 trivial refactor
discard 24148d0 trivial refactor
omit 91b8149 GROOVY-7996: check for get(String)/set(String,Object) or propertyMissing
new 3a9b12a GROOVY-7996: check for get(String)/set(String,Object) or propertyMissing
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (5a60495)
\
N -- N -- N refs/heads/GROOVY-7996 (3a9b12a)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
build.gradle | 2 +-
gradle.properties | 5 +-
gradle/wrapper/gradle-wrapper.properties | 2 +-
src/antlr/GroovyParser.g4 | 16 +-
src/main/antlr2/org/codehaus/groovy/antlr/groovy.g | 15 +-
.../groovy/grape/GrabAnnotationTransformation.java | 11 +-
src/main/java/groovy/inspect/Inspector.java | 3 +-
.../java/groovy/lang/BenchmarkInterceptor.java | 6 +-
src/main/java/groovy/lang/ExpandoMetaClass.java | 140 +--
src/main/java/groovy/lang/GroovyClassLoader.java | 127 ++-
src/main/java/groovy/lang/GroovyCodeSource.java | 28 +-
src/main/java/groovy/lang/GroovyShell.java | 36 +-
src/main/java/groovy/lang/MetaClassImpl.java | 86 +-
src/main/java/groovy/lang/ProxyMetaClass.java | 24 +-
.../java/groovy/util/FactoryBuilderSupport.java | 15 +-
src/main/java/groovy/util/GroovyScriptEngine.java | 40 +-
src/main/java/groovy/util/NodeList.java | 2 +-
src/main/java/groovy/util/ObjectGraphBuilder.java | 70 +-
src/main/java/groovy/util/ProxyGenerator.java | 14 +-
.../internal/util/ReevaluatingReference.java | 13 +-
.../java/org/apache/groovy/metaclass/Realm.java | 15 +-
.../util/concurrentlinkedhashmap/Weighers.java | 8 +-
src/main/java/org/codehaus/groovy/antlr/Main.java | 31 +-
.../groovy/antlr/java/Java2GroovyProcessor.java | 5 +-
.../groovy/antlr/treewalker/CompositeVisitor.java | 20 +-
.../antlr/treewalker/FlatNodeListTraversal.java | 8 +-
.../java/org/codehaus/groovy/ast/CompileUnit.java | 22 +-
.../org/codehaus/groovy/ast/GroovyCodeVisitor.java | 10 +-
.../java/org/codehaus/groovy/ast/ImportNode.java | 5 +-
.../java/org/codehaus/groovy/ast/MethodNode.java | 3 +-
.../java/org/codehaus/groovy/ast/ModuleNode.java | 98 +-
.../codehaus/groovy/ast/NodeMetaDataHandler.java | 42 +-
.../java/org/codehaus/groovy/ast/Parameter.java | 21 +-
.../groovy/ast/decompiled/AsmDecompiler.java | 5 +-
.../groovy/ast/expr/ArgumentListExpression.java | 3 +-
.../codehaus/groovy/ast/tools/GeneralUtils.java | 9 -
.../codehaus/groovy/ast/tools/GenericsUtils.java | 4 +-
.../groovy/ast/tools/WideningCategories.java | 32 +-
.../groovy/classgen/AsmClassGenerator.java | 73 +-
.../codehaus/groovy/classgen/BytecodeSequence.java | 7 +-
.../groovy/classgen/DummyClassGenerator.java | 9 +-
.../org/codehaus/groovy/classgen/EnumVisitor.java | 2 +
.../codehaus/groovy/classgen/ExtendedVerifier.java | 23 +-
.../classgen/InnerClassCompletionVisitor.java | 4 +-
.../org/codehaus/groovy/classgen/ReturnAdder.java | 11 +-
.../groovy/classgen/VariableScopeVisitor.java | 7 +-
.../org/codehaus/groovy/classgen/Verifier.java | 7 +-
.../groovy/classgen/asm/BytecodeHelper.java | 153 +--
.../groovy/classgen/asm/ClosureWriter.java | 6 +-
.../codehaus/groovy/classgen/asm/CompileStack.java | 9 +-
.../groovy/classgen/asm/InvocationWriter.java | 32 +-
.../codehaus/groovy/classgen/asm/MethodCaller.java | 3 +-
.../groovy/classgen/asm/StatementWriter.java | 24 +-
.../asm/sc/StaticCompilationMopWriter.java | 7 +-
.../classgen/asm/sc/StaticInvocationWriter.java | 30 +-
.../classgen/asm/sc/StaticTypesCallSiteWriter.java | 203 ++--
.../groovy/control/CompilerConfiguration.java | 151 ++-
.../codehaus/groovy/control/ErrorCollector.java | 12 +-
.../java/org/codehaus/groovy/control/Janitor.java | 6 +-
.../org/codehaus/groovy/control/LabelVerifier.java | 9 +-
.../codehaus/groovy/control/ProcessingUnit.java | 17 +-
.../codehaus/groovy/control/ResolveVisitor.java | 8 +-
.../org/codehaus/groovy/control/SourceUnit.java | 14 +-
.../groovy/control/StaticImportVisitor.java | 25 +-
.../groovy/control/messages/LocatedMessage.java | 14 +-
.../codehaus/groovy/reflection/CachedClass.java | 78 +-
.../groovy/reflection/CachedConstructor.java | 3 +-
.../org/codehaus/groovy/reflection/ClassInfo.java | 6 +-
.../reflection/ClassLoaderForClassArtifacts.java | 6 +-
.../groovy/reflection/ReflectionUtils.java | 27 +-
.../codehaus/groovy/reflection/SunClassLoader.java | 12 +-
.../reflection/stdclasses/CachedSAMClass.java | 9 +-
.../groovy/runtime/DefaultGroovyMethods.java | 27 +-
.../groovy/runtime/EncodingGroovyMethods.java | 4 +-
.../org/codehaus/groovy/runtime/InvokerHelper.java | 21 +-
.../groovy/runtime/ProcessGroovyMethods.java | 52 +-
.../groovy/runtime/ProxyGeneratorAdapter.java | 6 +-
.../groovy/runtime/ScriptBytecodeAdapter.java | 4 +-
.../groovy/runtime/SocketGroovyMethods.java | 6 +-
.../groovy/runtime/callsite/CallSiteGenerator.java | 44 +-
.../runtime/callsite/GroovySunClassLoader.java | 16 +-
.../runtime/callsite/PogoMetaMethodSite.java | 2 +-
.../runtime/callsite/PojoMetaMethodSite.java | 2 +-
.../groovy/runtime/metaclass/ClosureMetaClass.java | 44 +-
.../runtime/metaclass/ConcurrentReaderHashMap.java | 108 ++-
.../runtime/metaclass/MetaClassRegistryImpl.java | 62 +-
.../groovy/runtime/metaclass/MetaMethodIndex.java | 4 +-
.../runtime/powerassert/AssertionRenderer.java | 6 +-
.../java/org/codehaus/groovy/syntax/CSTNode.java | 14 +-
.../codehaus/groovy/tools/FileSystemCompiler.java | 4 +-
.../org/codehaus/groovy/tools/GroovyClass.java | 15 +-
.../org/codehaus/groovy/tools/GroovyStarter.java | 6 +-
.../groovy/tools/javac/JavaStubGenerator.java | 6 +-
.../groovy/tools/shell/util/MessageSource.java | 11 +-
.../transform/AnnotationCollectorTransform.java | 76 +-
.../transform/MapConstructorASTTransformation.java | 7 +-
.../transform/SortableASTTransformation.java | 9 +-
.../transform/ToStringASTTransformation.java | 9 +-
.../TupleConstructorASTTransformation.java | 9 +-
.../stc/AbstractExtensionMethodCache.java | 4 +-
.../stc/GroovyTypeCheckingExtensionSupport.java | 6 +-
.../transform/stc/StaticTypeCheckingSupport.java | 5 +-
.../transform/stc/StaticTypeCheckingVisitor.java | 60 +-
.../groovy/util/AbstractConcurrentMap.java | 12 +-
.../groovy/util/AbstractConcurrentMapBase.java | 100 +-
.../groovy/util/ManagedConcurrentLinkedQueue.java | 4 +-
.../org/codehaus/groovy/util/ReferenceManager.java | 38 +-
.../org/codehaus/groovy/vmplugin/VMPlugin.java | 12 +-
.../codehaus/groovy/vmplugin/v5/JUnit4Utils.java | 6 +-
.../org/codehaus/groovy/vmplugin/v5/Java5.java | 5 -
.../v7/IndyGuardsFiltersAndSignatures.java | 5 +-
.../codehaus/groovy/vmplugin/v7/IndyInterface.java | 8 +-
.../org/codehaus/groovy/vmplugin/v7/Java7.java | 18 +-
.../org/codehaus/groovy/vmplugin/v7/Selector.java | 15 +-
.../org/codehaus/groovy/vmplugin/v9/Java9.java | 57 +-
src/test/groovy/GroovyMethodsTest.groovy | 9 +-
src/test/groovy/bugs/Groovy2365Bug.java | 38 +-
src/test/groovy/bugs/Groovy8223.groovy | 48 -
src/test/groovy/bugs/Groovy9136.groovy | 14 +-
src/test/groovy/bugs/Groovy9288.groovy | 111 +--
src/test/groovy/bugs/Groovy9292.groovy | 359 -------
src/test/groovy/bugs/Groovy9292Bug.groovy | 1008 ++++++++++++++++++++
src/test/groovy/bugs/Groovy9293.groovy | 11 +-
src/test/groovy/bugs/groovy9081/Groovy9081.groovy | 16 +-
src/test/groovy/security/SecurityTest.java | 9 +-
src/test/groovy/security/SecurityTestSupport.java | 55 +-
.../stc/FieldsAndPropertiesSTCTest.groovy | 42 +-
src/test/groovy/transform/stc/WithSTCTest.groovy | 28 -
.../groovy/antlr/EnumSourceParsingTest.java | 284 ++----
.../classgen/ClassCompletionVerifierTest.java | 2 +-
.../groovy/classgen/ReflectorGeneratorTest.java | 4 +-
.../org/codehaus/groovy/classgen/TestSupport.java | 14 +-
.../groovy/classgen/asm/sc/bugs/Groovy7300.groovy | 74 --
.../{Groovy7316Bug.groovy => Groovy7300Bug.groovy} | 63 +-
.../asm/sc/bugs/support/Groovy7133Support.java | 3 +-
.../asm/sc/bugs/support/Groovy7538Support.java | 4 +-
.../groovy/runtime/memoize/CommonCacheTest.java | 7 +-
.../runtime/memoize/ConcurrentCommonCacheTest.java | 7 +-
.../runtime/memoize/StampedCommonCacheTest.java | 7 +-
.../memoize/UnlimitedConcurrentCacheTest.java | 7 +-
.../codehaus/groovy/tools/TestDgmConverter.java | 12 +-
.../codehaus/groovy/ant/CompileTaskSupport.java | 7 +-
.../groovy/ant/FileSystemCompilerFacade.java | 2 +-
.../main/java/org/codehaus/groovy/ant/Groovy.java | 7 +-
.../main/java/org/codehaus/groovy/ant/Groovyc.java | 27 +-
.../java/org/codehaus/groovy/ant/Groovydoc.java | 30 +-
.../codehaus/groovy/bsf/CachingGroovyEngine.java | 14 +-
.../groovy-bsf/src/spec/test/BSFSpecTest.java | 2 +-
.../test/java/org/codehaus/groovy/bsf/BSFTest.java | 2 +-
.../groovy/groovysh/util/PackageHelperImpl.groovy | 119 ++-
.../java/groovy/json/DefaultJsonGenerator.java | 8 +-
.../groovy/json/internal/CharSequenceValue.java | 3 +-
.../apache/groovy/json/internal/NumberValue.java | 3 +-
.../groovy/nio/extensions/NioExtensions.java | 4 +-
.../spec/test/MarkupTemplateEngineSpecTest.groovy | 7 +-
.../groovy/text/MarkupTemplateEngineTest.groovy | 701 +++++++-------
.../src/main/java/groovy/test/AllTestSuite.java | 7 +-
.../src/main/java/groovy/test/GroovyAssert.java | 2 +-
.../src/main/java/groovy/test/GroovyTestCase.java | 4 +-
.../src/main/java/groovy/test/GroovyTestSuite.java | 7 +-
.../NotYetImplementedASTTransformation.java | 64 +-
.../NotYetImplementedTransformTest.groovy | 210 ++--
.../apache/groovy/parser/antlr4/AstBuilder.java | 23 +-
.../groovy/parser/antlr4/ModifierManager.java | 1 -
.../groovy/parser/antlr4}/ModifierNode.java | 6 +-
.../groovy/parser/antlr4/SemanticPredicates.java | 1 -
.../test/resources/core/EnumDeclaration_02.groovy | 27 +-
167 files changed, 3654 insertions(+), 2802 deletions(-)
delete mode 100644 src/test/groovy/bugs/Groovy8223.groovy
delete mode 100644 src/test/groovy/bugs/Groovy9292.groovy
create mode 100644 src/test/groovy/bugs/Groovy9292Bug.groovy
delete mode 100644 src/test/org/codehaus/groovy/classgen/asm/sc/bugs/Groovy7300.groovy
copy src/test/org/codehaus/groovy/classgen/asm/sc/bugs/{Groovy7316Bug.groovy => Groovy7300Bug.groovy} (60%)
rename subprojects/parser-antlr4/src/main/java/org/{codehaus/groovy/ast => apache/groovy/parser/antlr4}/ModifierNode.java (96%)
[groovy] 01/01: GROOVY-7996: check for get(String)/set(String,
Object) or propertyMissing
Posted by em...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch GROOVY-7996
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 3a9b12ad1f3f2307936eb2b3a014a9195d655ff8
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Tue Oct 29 14:37:21 2019 -0500
GROOVY-7996: check for get(String)/set(String,Object) or propertyMissing
---
.../transform/stc/StaticTypeCheckingVisitor.java | 19 +++++++++++++++++++
src/test/groovy/bugs/Groovy7996.groovy | 14 +++++++++-----
.../src/spec/test/MarkupTemplateEngineSpecTest.groovy | 7 ++++---
3 files changed, 32 insertions(+), 8 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index f38d0d7..3e562e2 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -1716,6 +1716,25 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
}
}
}
+
+ // GROOVY-7996: check if receiver implements get(String)/set(String,Object) or propertyMissing(String)
+ if (!testClass.isArray() && !isPrimitiveType(getUnwrapper(testClass))
+ && objectExpression instanceof VariableExpression && typeCheckingContext.getEnclosingClosure() != null) {
+ MethodNode mopMethod;
+ if (readMode) {
+ mopMethod = testClass.getMethod("get", new Parameter[]{new Parameter(STRING_TYPE, "name")});
+ } else {
+ mopMethod = testClass.getMethod("set", new Parameter[]{new Parameter(STRING_TYPE, "name"), new Parameter(OBJECT_TYPE, "value")});
+ }
+ if (mopMethod == null) mopMethod = testClass.getMethod("propertyMissing", new Parameter[]{new Parameter(STRING_TYPE, "propertyName")});
+
+ if (mopMethod != null) {
+ pexp.putNodeMetaData(DYNAMIC_RESOLUTION, Boolean.TRUE);
+ pexp.removeNodeMetaData(DECLARATION_INFERRED_TYPE);
+ pexp.removeNodeMetaData(INFERRED_TYPE);
+ return true;
+ }
+ }
}
for (Receiver<String> receiver : receivers) {
diff --git a/src/test/groovy/bugs/Groovy7996.groovy b/src/test/groovy/bugs/Groovy7996.groovy
index fc0872f..39de261 100644
--- a/src/test/groovy/bugs/Groovy7996.groovy
+++ b/src/test/groovy/bugs/Groovy7996.groovy
@@ -18,16 +18,18 @@
*/
package groovy.bugs
-import groovy.test.NotYetImplemented
+import groovy.transform.CompileStatic
import org.junit.Test
import static groovy.test.GroovyAssert.assertScript
+import static groovy.test.GroovyAssert.shouldFail
+@CompileStatic
final class Groovy7996 {
- @Test @NotYetImplemented
+ @Test
void testFieldAccessFromClosure1() {
- assertScript '''
+ def err = shouldFail '''
class Foo {
def build(@DelegatesTo(value=Foo, strategy=Closure.DELEGATE_FIRST) Closure block) {
this.with(block)
@@ -45,13 +47,15 @@ final class Groovy7996 {
boolean doStuff() {
Foo foo = new Foo()
foo.build {
- bar.isEmpty() // "ClassCastException: java.lang.String cannot be cast to java.util.List"
+ bar.isEmpty() // ClassCastException: java.lang.String cannot be cast to java.util.List
}
}
}
- assert new Bar().doStuff()
+ new Bar().doStuff()
'''
+
+ assert err =~ /Cannot find matching method java.lang.Object#isEmpty\(\)/
}
@Test
diff --git a/subprojects/groovy-templates/src/spec/test/MarkupTemplateEngineSpecTest.groovy b/subprojects/groovy-templates/src/spec/test/MarkupTemplateEngineSpecTest.groovy
index c94f449..da68093 100644
--- a/subprojects/groovy-templates/src/spec/test/MarkupTemplateEngineSpecTest.groovy
+++ b/subprojects/groovy-templates/src/spec/test/MarkupTemplateEngineSpecTest.groovy
@@ -22,7 +22,8 @@ import groovy.text.Template
import groovy.text.markup.MarkupTemplateEngine
import groovy.text.markup.TemplateConfiguration
-class MarkupTemplateEngineSpecTest extends GroovyTestCase {
+final class MarkupTemplateEngineSpecTest extends GroovyTestCase {
+
private MarkupTemplateEngine engine
private TemplateConfiguration config
private Map model
@@ -621,7 +622,7 @@ pages.each { page -> // <1>
// end::typechecked_setup_fixed[]
*/
- assertError 'No such property: text for class: MarkupTemplateEngineSpecTest$Page'
+ assertError 'No such property: text for class: MarkupTemplateEngineSpec'
}
void testInlinedTypeCheckedModel() {
@@ -654,7 +655,7 @@ pages.each { page ->
// end::typechecked_inlined_template_expected[]
'''
- assertError 'No such property: text for class: MarkupTemplateEngineSpecTest$Page'
+ assertError 'No such property: text for class: MarkupTemplateEngineSpec'
}
void testFragment() {