groovy git commit: GROOVY-8895: Traits defining getter conflicts with generated getter

2018-11-20 Thread paulk
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

2018-11-20 Thread paulk
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"

2018-11-20 Thread sunlan
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

2018-11-20 Thread sunlan
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

2018-11-20 Thread sunlan
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)

2018-11-20 Thread sunlan
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)

2018-11-20 Thread sunlan
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
 }