groovy git commit: GROOVY-8895: Traits defining getter conflicts with generated getter
Repository: groovy Updated Branches: refs/heads/GROOVY_2_5_X 541b3df5e -> 0dc69445c GROOVY-8895: Traits defining getter conflicts with generated getter Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/0dc69445 Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/0dc69445 Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/0dc69445 Branch: refs/heads/GROOVY_2_5_X Commit: 0dc69445ca2b1f0ec2e7dd62d5172f54304ea692 Parents: 541b3df Author: Paul King Authored: Wed Nov 21 06:06:18 2018 +1000 Committer: Paul King Committed: Wed Nov 21 06:07:58 2018 +1000 -- .../groovy/tools/javac/JavaStubGenerator.java | 2 +- .../TraitAbstractGetterStubTest.groovy | 68 2 files changed, 69 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/groovy/blob/0dc69445/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java -- diff --git a/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java b/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java index 0c1acbd..4b9efbb 100644 --- a/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java +++ b/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java @@ -337,7 +337,7 @@ public class JavaStubGenerator { } } } -if (method==null) { +if (method==null && !traitMethod.isAbstract()) { printMethod(out, classNode, traitMethod); } } http://git-wip-us.apache.org/repos/asf/groovy/blob/0dc69445/src/test/org/codehaus/groovy/tools/stubgenerator/TraitAbstractGetterStubTest.groovy -- diff --git a/src/test/org/codehaus/groovy/tools/stubgenerator/TraitAbstractGetterStubTest.groovy b/src/test/org/codehaus/groovy/tools/stubgenerator/TraitAbstractGetterStubTest.groovy new file mode 100644 index 000..d2df4c5 --- /dev/null +++ b/src/test/org/codehaus/groovy/tools/stubgenerator/TraitAbstractGetterStubTest.groovy @@ -0,0 +1,68 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + *http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.codehaus.groovy.tools.stubgenerator + +/** + * GROOVY-8895: Checks that a trait with an abstract getter isn't included in stub by mistake + */ +class TraitAbstractGetterStubTest extends StringSourcesStubTestCase { + +@Override +Map provideSources() { +[ +'Foo8895.java': ''' +public class Foo8895 { } +''', + +'GetFoo.groovy': ''' +trait GetFoo { +abstract Foo8895 getFoo() +} +''', + +'BaseFooSpec.groovy': ''' +class BaseFooSpec { +Foo8895 foo = new Foo8895() +} +''', + +'FooSpec.groovy': ''' +class FooSpec extends BaseFooSpec implements GetFoo { } +''', + +'Control.groovy': ''' +class Control implements GetFoo { } +''', +] +} + +//protected void init() { +//debug = true +//delete = false +//} + +@Override +void verifyStubs() { +String stubSource = stubJavaSourceFor('FooSpec') +assert !stubSource.contains('Foo8895 getFoo()') +stubSource = stubJavaSourceFor('Control') +assert !stubSource.contains('Foo8895 getFoo()') +} + +}
groovy git commit: GROOVY-8895: Traits defining getter conflicts with generated getter
Repository: groovy Updated Branches: refs/heads/master 1fc3b672d -> 650936ecd GROOVY-8895: Traits defining getter conflicts with generated getter Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/650936ec Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/650936ec Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/650936ec Branch: refs/heads/master Commit: 650936ecd10301f4b0cc37bbe4566a338ac29167 Parents: 1fc3b67 Author: Paul King Authored: Wed Nov 21 06:06:18 2018 +1000 Committer: Paul King Committed: Wed Nov 21 06:06:33 2018 +1000 -- .../groovy/tools/javac/JavaStubGenerator.java | 2 +- .../TraitAbstractGetterStubTest.groovy | 68 2 files changed, 69 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/groovy/blob/650936ec/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java -- diff --git a/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java b/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java index 0c1acbd..4b9efbb 100644 --- a/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java +++ b/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java @@ -337,7 +337,7 @@ public class JavaStubGenerator { } } } -if (method==null) { +if (method==null && !traitMethod.isAbstract()) { printMethod(out, classNode, traitMethod); } } http://git-wip-us.apache.org/repos/asf/groovy/blob/650936ec/src/test/org/codehaus/groovy/tools/stubgenerator/TraitAbstractGetterStubTest.groovy -- diff --git a/src/test/org/codehaus/groovy/tools/stubgenerator/TraitAbstractGetterStubTest.groovy b/src/test/org/codehaus/groovy/tools/stubgenerator/TraitAbstractGetterStubTest.groovy new file mode 100644 index 000..d2df4c5 --- /dev/null +++ b/src/test/org/codehaus/groovy/tools/stubgenerator/TraitAbstractGetterStubTest.groovy @@ -0,0 +1,68 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + *http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.codehaus.groovy.tools.stubgenerator + +/** + * GROOVY-8895: Checks that a trait with an abstract getter isn't included in stub by mistake + */ +class TraitAbstractGetterStubTest extends StringSourcesStubTestCase { + +@Override +Map provideSources() { +[ +'Foo8895.java': ''' +public class Foo8895 { } +''', + +'GetFoo.groovy': ''' +trait GetFoo { +abstract Foo8895 getFoo() +} +''', + +'BaseFooSpec.groovy': ''' +class BaseFooSpec { +Foo8895 foo = new Foo8895() +} +''', + +'FooSpec.groovy': ''' +class FooSpec extends BaseFooSpec implements GetFoo { } +''', + +'Control.groovy': ''' +class Control implements GetFoo { } +''', +] +} + +//protected void init() { +//debug = true +//delete = false +//} + +@Override +void verifyStubs() { +String stubSource = stubJavaSourceFor('FooSpec') +assert !stubSource.contains('Foo8895 getFoo()') +stubSource = stubJavaSourceFor('Control') +assert !stubSource.contains('Foo8895 getFoo()') +} + +}
groovy git commit: Refine "GROOVY-8887: Support multi-assignment of tuples in STC"
Repository: groovy Updated Branches: refs/heads/master e07eaead6 -> 1fc3b672d Refine "GROOVY-8887: Support multi-assignment of tuples in STC" Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/1fc3b672 Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/1fc3b672 Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/1fc3b672 Branch: refs/heads/master Commit: 1fc3b672da05caea26996f644bd14e524126b4bb Parents: e07eaea Author: Daniel Sun Authored: Wed Nov 21 00:00:34 2018 +0800 Committer: Daniel Sun Committed: Wed Nov 21 00:00:34 2018 +0800 -- .../stc/StaticTypeCheckingVisitor.java | 45 +++-- src/test/groovy/bugs/Groovy8887.groovy | 52 ++-- 2 files changed, 67 insertions(+), 30 deletions(-) -- http://git-wip-us.apache.org/repos/asf/groovy/blob/1fc3b672/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java -- 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 284fc72..de2abff 100644 --- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java +++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java @@ -1124,42 +1124,35 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport { } ClassNode cn = null; -if (rightExpression instanceof MethodCallExpression || rightExpression instanceof VariableExpression) { -cn = rightExpression.getType(); +if (rightExpression instanceof MethodCallExpression || rightExpression instanceof ConstructorCallExpression || rightExpression instanceof VariableExpression) { +ClassNode inferredType = getType(rightExpression); +cn = null == inferredType ? rightExpression.getType() : inferredType; } if (null == cn) { return null; } -Expression listExpression = transformToListExpression(rightExpression, cn); -if (listExpression != null) return listExpression; - -return null; -} - -private Expression transformToListExpression(Expression expression, ClassNode cn) { -if (null != cn && cn.isDerivedFrom(ClassHelper.TUPLE_TYPE)) { // just for performance to check -for (int i = 0, n = TUPLE_CLASSES.length; i < n; i++) { -Class tcn = TUPLE_CLASSES[i]; -if (tcn.equals(cn.getTypeClass())) { -ListExpression listExpression = new ListExpression(); -GenericsType[] genericsTypes = cn.getGenericsTypes(); -for (int j = 0; j < i; j++) { -// the index of element in tuple starts with 1 -MethodCallExpression mce = new MethodCallExpression(expression, "getV" + (j + 1), ArgumentListExpression.EMPTY_ARGUMENTS); -ClassNode elementType = null != genericsTypes ? genericsTypes[j].getType() : ClassHelper.OBJECT_TYPE; -mce.setType(elementType); -storeType(mce, elementType); -listExpression.addExpression(mce); -} +for (int i = 0, n = TUPLE_CLASSES.length; i < n; i++) { +Class tcn = TUPLE_CLASSES[i]; +if (tcn.equals(cn.getTypeClass())) { +ListExpression listExpression = new ListExpression(); +GenericsType[] genericsTypes = cn.getGenericsTypes(); +for (int j = 0; j < i; j++) { +// the index of element in tuple starts with 1 +MethodCallExpression mce = new MethodCallExpression(rightExpression, "getV" + (j + 1), ArgumentListExpression.EMPTY_ARGUMENTS); +ClassNode elementType = null != genericsTypes ? genericsTypes[j].getType() : ClassHelper.OBJECT_TYPE; +mce.setType(elementType); +storeType(mce, elementType); +listExpression.addExpression(mce); +} -listExpression.setSourcePosition(expression); +listExpression.setSourcePosition(rightExpression); -return listExpression; -} +return listExpression; } } + return null; } http://git-wip-us.apache.org/repos/asf/groovy/blob/1fc3b672/src/test/groovy/bugs/Groovy8887.groovy -- diff --git a/src/test/groovy/bugs/Groovy8887.groovy b/src/test/groovy/bugs/Groovy8887.groovy index 2c4e80c..2335794
groovy git commit: Trivial refactoring: make `DEFAULT_BUFFER_SIZE` final
Repository: groovy Updated Branches: refs/heads/GROOVY_2_5_X 686ade4b3 -> 541b3df5e Trivial refactoring: make `DEFAULT_BUFFER_SIZE` final (cherry picked from commit e07eaead67a58e55e1a4e2dc8674e20823e5a3e1) Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/541b3df5 Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/541b3df5 Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/541b3df5 Branch: refs/heads/GROOVY_2_5_X Commit: 541b3df5e06e3831015edfc515c699c0ce9148ae Parents: 686ade4 Author: Daniel Sun Authored: Tue Nov 20 21:30:31 2018 +0800 Committer: Daniel Sun Committed: Tue Nov 20 21:34:29 2018 +0800 -- src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/groovy/blob/541b3df5/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java -- diff --git a/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java index c4e54e3..2ac7385 100644 --- a/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java +++ b/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java @@ -1698,5 +1698,5 @@ public class IOGroovyMethods extends DefaultGroovyMethodsSupport { } } -private static int DEFAULT_BUFFER_SIZE = 8192; // 8k +private static final int DEFAULT_BUFFER_SIZE = 8192; // 8k }
groovy git commit: Trivial refactoring: make `DEFAULT_BUFFER_SIZE` final
Repository: groovy Updated Branches: refs/heads/master 2bd6ac59a -> e07eaead6 Trivial refactoring: make `DEFAULT_BUFFER_SIZE` final Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/e07eaead Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/e07eaead Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/e07eaead Branch: refs/heads/master Commit: e07eaead67a58e55e1a4e2dc8674e20823e5a3e1 Parents: 2bd6ac5 Author: Daniel Sun Authored: Tue Nov 20 21:30:31 2018 +0800 Committer: Daniel Sun Committed: Tue Nov 20 21:30:31 2018 +0800 -- src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/groovy/blob/e07eaead/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java -- diff --git a/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java index c4e54e3..2ac7385 100644 --- a/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java +++ b/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java @@ -1698,5 +1698,5 @@ public class IOGroovyMethods extends DefaultGroovyMethodsSupport { } } -private static int DEFAULT_BUFFER_SIZE = 8192; // 8k +private static final int DEFAULT_BUFFER_SIZE = 8192; // 8k }
groovy git commit: GROOVY-8894: Improve performance of DGM `leftShift(OutputStream, InputStream)`(closes #826)
Repository: groovy Updated Branches: refs/heads/GROOVY_2_5_X 40eb8f6ff -> 686ade4b3 GROOVY-8894: Improve performance of DGM `leftShift(OutputStream, InputStream)`(closes #826) (cherry picked from commit 2bd6ac59a00490fb13f52d597e7c31c616cf9c64) Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/686ade4b Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/686ade4b Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/686ade4b Branch: refs/heads/GROOVY_2_5_X Commit: 686ade4b3f6ef4bec9635540637008ec433f2959 Parents: 40eb8f6 Author: Daniel Sun Authored: Tue Nov 20 21:22:28 2018 +0800 Committer: Daniel Sun Committed: Tue Nov 20 21:25:03 2018 +0800 -- .../org/codehaus/groovy/runtime/IOGroovyMethods.java| 12 1 file changed, 4 insertions(+), 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/groovy/blob/686ade4b/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java -- diff --git a/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java index f65c85f..c4e54e3 100644 --- a/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java +++ b/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java @@ -205,14 +205,8 @@ public class IOGroovyMethods extends DefaultGroovyMethodsSupport { * @since 1.0 */ public static OutputStream leftShift(OutputStream self, InputStream in) throws IOException { -byte[] buf = new byte[1024]; -while (true) { -int count = in.read(buf, 0, buf.length); -if (count == -1) break; -if (count == 0) { -Thread.yield(); -continue; -} +byte[] buf = new byte[DEFAULT_BUFFER_SIZE]; +for (int count; -1 != (count = in.read(buf)); ) { self.write(buf, 0, count); } self.flush(); @@ -1703,4 +1697,6 @@ public class IOGroovyMethods extends DefaultGroovyMethodsSupport { writer.write(-2); // FE } } + +private static int DEFAULT_BUFFER_SIZE = 8192; // 8k }
groovy git commit: GROOVY-8894: Improve performance of DGM `leftShift(OutputStream, InputStream)`(closes #826)
Repository: groovy Updated Branches: refs/heads/master 3602dd940 -> 2bd6ac59a GROOVY-8894: Improve performance of DGM `leftShift(OutputStream, InputStream)`(closes #826) Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/2bd6ac59 Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/2bd6ac59 Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/2bd6ac59 Branch: refs/heads/master Commit: 2bd6ac59a00490fb13f52d597e7c31c616cf9c64 Parents: 3602dd9 Author: Daniel Sun Authored: Tue Nov 20 21:22:28 2018 +0800 Committer: Daniel Sun Committed: Tue Nov 20 21:22:28 2018 +0800 -- .../org/codehaus/groovy/runtime/IOGroovyMethods.java| 12 1 file changed, 4 insertions(+), 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/groovy/blob/2bd6ac59/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java -- diff --git a/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java index f65c85f..c4e54e3 100644 --- a/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java +++ b/src/main/java/org/codehaus/groovy/runtime/IOGroovyMethods.java @@ -205,14 +205,8 @@ public class IOGroovyMethods extends DefaultGroovyMethodsSupport { * @since 1.0 */ public static OutputStream leftShift(OutputStream self, InputStream in) throws IOException { -byte[] buf = new byte[1024]; -while (true) { -int count = in.read(buf, 0, buf.length); -if (count == -1) break; -if (count == 0) { -Thread.yield(); -continue; -} +byte[] buf = new byte[DEFAULT_BUFFER_SIZE]; +for (int count; -1 != (count = in.read(buf)); ) { self.write(buf, 0, count); } self.flush(); @@ -1703,4 +1697,6 @@ public class IOGroovyMethods extends DefaultGroovyMethodsSupport { writer.write(-2); // FE } } + +private static int DEFAULT_BUFFER_SIZE = 8192; // 8k }