You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2017/05/08 00:27:02 UTC

[02/17] groovy git commit: rename antlr4 parser to remove groovy- prefix since that is by convention for modules

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/ImportDeclaration_07.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/ImportDeclaration_07.groovy b/subprojects/parser-antlr4/src/test/resources/core/ImportDeclaration_07.groovy
new file mode 100644
index 0000000..36b6215
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/ImportDeclaration_07.groovy
@@ -0,0 +1,24 @@
+/*
+ *  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 core;
+import java.util.*
+import java.math.BigDecimal;
+import java.io.*
+import static java.lang.Math.*
+import static java.lang.Math.pow

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/ImportDeclaration_08.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/ImportDeclaration_08.groovy b/subprojects/parser-antlr4/src/test/resources/core/ImportDeclaration_08.groovy
new file mode 100644
index 0000000..c6f8d2e
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/ImportDeclaration_08.groovy
@@ -0,0 +1,46 @@
+/*
+ *  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.
+ */
+#!/usr/bin/env groovy
+/*
+ *  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 core;
+
+import java.util.*
+import java.math.BigDecimal;
+import java.io.*
+import java.sql.Blob as Bb
+import static java.lang.Math.*;
+import static java.lang.Math.pow as pw
+import def.in.as.trait.*;

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/InterfaceDeclaration_01.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/InterfaceDeclaration_01.groovy b/subprojects/parser-antlr4/src/test/resources/core/InterfaceDeclaration_01.groovy
new file mode 100644
index 0000000..992926c
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/InterfaceDeclaration_01.groovy
@@ -0,0 +1,54 @@
+/*
+ *  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 core
+
+interface A1 {}
+interface A2<T> {}
+interface A3<T extends A> {}
+interface A4<T extends A & B> {}
+interface A5<T extends A & B & C> {}
+interface A6<T extends A & B & C> extends A {}
+interface A62 extends A<T> {}
+interface A7<T extends A & B & C> extends A, B {}
+interface A8<T extends A & B & C> extends A, B, C {}
+@Test2 interface A9<T extends A & B & C> extends A, B, C {}
+@Test2 @Test3 public interface A10<T extends A & B & C> extends A, B, C {}
+
+@Test2
+@Test3
+@Test4
+public
+interface A11
+<
+        T extends
+A &
+B &
+C
+>
+extends
+A,
+B,
+C
+        {
+
+        }
+
+interface Iterator extends java.util.Iterator {}
+
+interface i {}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/InterfaceDeclaration_02.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/InterfaceDeclaration_02.groovy b/subprojects/parser-antlr4/src/test/resources/core/InterfaceDeclaration_02.groovy
new file mode 100644
index 0000000..a6e49ba
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/InterfaceDeclaration_02.groovy
@@ -0,0 +1,60 @@
+/*
+ *  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 core
+
+import java.sql.SQLException
+
+public interface AA1 {
+        int a;
+        long b;
+        double c;
+        char d;
+        short e;
+        byte f;
+        float g;
+        boolean h;
+        String i;
+
+        public static final NAME = "AA1"
+
+        @Test3
+        public static final NAME2 = "AA1"
+
+        void sayHello();
+        abstract void sayHello2();
+        public void sayHello3();
+        public abstract void sayHello4();
+        @Test2
+        public abstract void sayHello5();
+
+        @Test2
+        public abstract void sayHello6() throws IOException, SQLException;
+
+        @Test2
+        @Test3
+        public abstract <T> T sayHello7() throws IOException, SQLException;
+
+        @Test2
+        @Test3
+        public abstract <T extends A> T sayHello8() throws IOException, SQLException;
+
+        @Test2
+        @Test3
+        public abstract <T extends A & B> T sayHello9() throws IOException, SQLException;
+}

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/InterfaceDeclaration_03.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/InterfaceDeclaration_03.groovy b/subprojects/parser-antlr4/src/test/resources/core/InterfaceDeclaration_03.groovy
new file mode 100644
index 0000000..9c78681
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/InterfaceDeclaration_03.groovy
@@ -0,0 +1,25 @@
+/*
+ *  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.
+ */
+interface Koo {
+    class Inner {}
+}
+
+interface Koo2 {
+    public static final Inner INNER = new Inner() {}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/Label_01.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/Label_01.groovy b/subprojects/parser-antlr4/src/test/resources/core/Label_01.groovy
new file mode 100644
index 0000000..9e9645b
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/Label_01.groovy
@@ -0,0 +1,33 @@
+/*
+ *  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.
+ */
+a: assert true;
+a: assert true
+a:
+assert true;
+a:
+assert true
+
+
+before:
+setup:
+int a = 1
+int b = 1
+expect:
+a == b
+

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/Lambda_01x.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/Lambda_01x.groovy b/subprojects/parser-antlr4/src/test/resources/core/Lambda_01x.groovy
new file mode 100644
index 0000000..5c147ac
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/Lambda_01x.groovy
@@ -0,0 +1,66 @@
+/*
+ *  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.
+ */
+assert 9 == [1, 2, 3].stream().map(e -> e + 1).reduce(0, (r, e) -> r + e)
+assert 9 == [1, 2, 3].stream().map(e -> {e + 1}).reduce(0, (r, e) -> r + e)
+assert 9 == [1, 2, 3].stream().map((e) -> e + 1).reduce(0, (r, e) -> r + e)
+assert 9 == [1, 2, 3].stream().map((e) -> e + 1).reduce(0, (r, e) -> {r + e})
+assert 32 == ((e) -> e + 1)(2) + ((e, f) -> e + f)(2, 3) + ((e, f, g) -> e * f * g)(2, 3, 4)
+
+assert 24 == ((e, f, g) -> {e * f * g})(2, 3, 4)
+assert 24 == ((int e, int f, int g) -> {
+    int tmpE = e;
+    int tmpF = f;
+    int tmpG = g;
+    return tmpE * tmpF * tmpG;
+})(2, 3, 4)
+assert 24 == ((int e, int f, int g=4) -> {
+    int tmpE = e;
+    int tmpF = f;
+    int tmpG = g;
+    return tmpE * tmpF * tmpG;
+})(2, 3)
+
+def list = [2, 3, 1]
+Collections.sort(list, (n1, n2) -> n1 <=> n2)
+assert [1, 2, 3] == list
+
+assert 1 == (e -> e)(1)
+assert 2 == (() -> 2)()
+
+def lambda = e -> e;
+assert 1 == lambda(1)
+
+lambda = e -> e + 1;
+assert 2 == lambda(1)
+
+int sum = 0;
+[1, 2, 3].forEach(e -> {
+    sum += e
+})
+assert 6 == sum;
+
+def c = { (e) -> e * 2 }
+assert 6 == c()(3)
+
+c = { (e) -> { e * 2 } }
+assert 6 == c()(3)
+
+assert ['1', '2', '3'] == [0, 1, 2].collect(e -> String.valueOf e + 1)
+assert [3, 4, 5] == ['0', '1', '2'].collect(e -> Integer.parseInt e plus 1 plus 2)
+assert [4] == ['0'].collect(e -> e.length() plus 1 plus 2)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/List_01.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/List_01.groovy b/subprojects/parser-antlr4/src/test/resources/core/List_01.groovy
new file mode 100644
index 0000000..f7c122e
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/List_01.groovy
@@ -0,0 +1,33 @@
+/*
+ *  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.
+ */
+[]
+[
+        
+]
+[1, 2, 3]
+[1, 2, 3,]
+[[1, 2, 3], 2, 3]
+[
+        [1,
+         2,
+         3],
+        2,
+        3]
+
+[1, *[2, 3, 4], 5, 6, *[7, 8], *[9]]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/Literal_01.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/Literal_01.groovy b/subprojects/parser-antlr4/src/test/resources/core/Literal_01.groovy
new file mode 100644
index 0000000..c3a1f3a
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/Literal_01.groovy
@@ -0,0 +1,97 @@
+/*
+ *  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.
+ */
+null
+true
+false
+
+
+1
+12
+123
+
+1.2
+1.2f
+1.2F
+1.2d
+1.2D
+1.2g
+1.2G
+
+0x1234567890abcdef
+0X1234567890ABCDEF
+0x1234567890abcdefi
+0x1234567890abcdefl
+0x1234567890abcdefg
+0x1234567890abcdefI
+0x1234567890abcdefL
+0x1234567890abcdefG
+0xabcdef
+0xABCDEF
+0xABCDEF
+0xabcdef
+0xABCDEF
+
+01234567
+01234567
+01234567
+01234567i
+01234567l
+01234567g
+01234567I
+01234567L
+01234567G
+
+1__2
+2_12_3
+2__12__3
+2__12__3.1__2
+2__12__3.1__2
+12e10
+12e-10
+12e10
+12e-10
+12.12e10
+12.12e-10
+12.12e10
+12.12e-10
+12.12e-10f
+12.12e-10d
+12.12e-10g
+12e-10F
+120e-10D
+11F
+12D
+1.1F
+1.2D
+12e-10G
+12.1__2e-10f
+12.1_2e-10d
+1__12_2.12e-10g
+0xab__cdef
+0xAB__CD_EF
+012__34567L
+
+0b010101
+0B10101011
+0B10101011i
+0B10101011I
+0B10101011l
+0B10101011L
+0B10101011g
+0B10101011G
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/Literal_02.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/Literal_02.groovy b/subprojects/parser-antlr4/src/test/resources/core/Literal_02.groovy
new file mode 100644
index 0000000..de55750
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/Literal_02.groovy
@@ -0,0 +1,66 @@
+/*
+ *  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.
+ */
+'123'
+'abc'
+'a1b2c3'
+'a\tb\tc'
+'a\nb\r\nc'
+'$a$b$c'
+'$1$2$3'
+'$1$2\$3'
+'\$1\$2\$3\
+  hello world\
+'
+"\$1\$2\$3\
+  hello world\
+"
+' nested "double quotes" '
+" nested 'quotes' "
+' \6 1 digit is escaped'
+' \665 2 digits are escaped, \'5\' is a character.'
+' \3666 3 digits are escaped'
+' \166 '
+" \166 "
+' \u1234 '
+
+'''abc'''
+'''123'''
+'''
+            ''hello world''
+            'hello'
+            ''world'
+            'hi''
+            \
+            \t\r\n
+            $\$
+            \u1234
+            \123
+'''
+
+"""
+            ''hello world''
+            'hello'
+            ''world'
+            'hi''
+            \
+            \t\r\n
+            \$
+            \u1234
+            \123
+"""

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/Literal_03.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/Literal_03.groovy b/subprojects/parser-antlr4/src/test/resources/core/Literal_03.groovy
new file mode 100644
index 0000000..865596b
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/Literal_03.groovy
@@ -0,0 +1,21 @@
+/*
+ *  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.
+ */
+/\123 \/ abc \u1234 \r\n\$/
+
+$/\123 \/ abc \u1234 \r\n/$

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/LocalVariableDeclaration_01.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/LocalVariableDeclaration_01.groovy b/subprojects/parser-antlr4/src/test/resources/core/LocalVariableDeclaration_01.groovy
new file mode 100644
index 0000000..7db2948
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/LocalVariableDeclaration_01.groovy
@@ -0,0 +1,128 @@
+/*
+ *  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.
+ */
+import groovy.transform.Field
+
+int a;
+int b = 1;
+int c =
+        1;
+final d = 1;
+@Test2 e = 1;
+@Test2 final f = 1;
+final
+@Test2 g = 1;
+
+int h, i = 1;
+int j,
+        k =
+                1;
+int l =
+        2,
+    m =
+            1;
+int n =
+        1
+int o =
+        2,
+    p =
+            1
+
+List list = [1, 2 + 6, [1, 2 + 3]]
+List list2 =
+        [
+                1,
+         2 +
+                6,
+                [1,
+                 2 +
+                         3]
+        ]
+
+def (int x, int y) = [1, 2]
+
+@Test2
+def
+        (int q,
+                int r) =
+                        [1, 2]
+
+def (int s, int t) = otherTuple
+
+def (int w, z) = [1, 2]
+def (a2, int b2) = [1, 2]
+
+def (u, v) = [1, 2]
+
+def (int c2, String d2, java.lang.Double e2) = [1, '2', 3.3D]
+
+def cc = {
+        String bb = 'Test'
+        return bb;
+}
+
+int xx = b c d e
+
+@Field static List list = [1, 2, 3]
+
+if (false)
+        def a = 5
+
+if(false)
+        def a, b = 10
+
+if(false)
+        def a = 9, b = 10
+
+if (false)
+        def a = 5
+else
+        def b = 2
+
+if(false)
+        def a, b = 10
+else
+        def a, b = 8
+
+if(false)
+        def a = 9, b = 10
+else
+        def a = 6, b = 8
+
+while(false)
+        def a = 5
+
+while(false)
+        def a, b = 10
+
+while(false)
+        def a = 9, b = 10
+
+for(;;)
+        def a = 5
+
+for(;;)
+        def a, b = 10
+
+for(;;)
+        def a = 9, b = 10
+
+
+
+Class<String>[] c
+Class<?>[] c2
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/Map_01.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/Map_01.groovy b/subprojects/parser-antlr4/src/test/resources/core/Map_01.groovy
new file mode 100644
index 0000000..bcc0f3e
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/Map_01.groovy
@@ -0,0 +1,47 @@
+/*
+ *  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.
+ */
+[a: 1, b: 2, c: 3]
+[(a): 1, (b**2): x, c: 2 + 3]
+['a': '1', 'b': 2, 'c': '3']
+[1: 2, 2: 3, 3: 4]
+[1.1: 2, 2.2: 3, 3.3: 4]
+[
+        (a)
+        :
+                1
+        ,
+        (
+                b**2
+        )
+        :
+                x
+        ,
+        c
+        :
+                2 +
+                        3
+]
+
+[(a): '1', *: [(a + 1): 1, (b): 2], *: ['a': 1 + 2]]
+
+[:]
+[
+        :
+]
+

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/MethodDeclaration_01.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/MethodDeclaration_01.groovy b/subprojects/parser-antlr4/src/test/resources/core/MethodDeclaration_01.groovy
new file mode 100644
index 0000000..e7220e0
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/MethodDeclaration_01.groovy
@@ -0,0 +1,50 @@
+/*
+ *  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.
+ */
+int plus(int a, int b) {
+        return a + b;
+}
+
+int plus2(int a,
+          int b)
+{
+        return a + b;
+}
+
+int plus3(int a,
+          int b)
+throws
+        Exception1,
+        Exception2
+{
+        return a + b;
+}
+
+def <T> T someMethod() {}
+def <T extends List> T someMethod2() {}
+def <T extends A & B> T someMethod3() {}
+
+static m(a) {}
+static m2(a, b) {}
+static m3(a, b, c) {}
+static Object m4(a, b, c) {}
+
+private String relativePath() { '' }
+def foo() {}
+
+

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/MethodDeclaration_02.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/MethodDeclaration_02.groovy b/subprojects/parser-antlr4/src/test/resources/core/MethodDeclaration_02.groovy
new file mode 100644
index 0000000..91879a9
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/MethodDeclaration_02.groovy
@@ -0,0 +1,59 @@
+/*
+ *  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.
+ */
+final int plus(int a, int b) {
+        return a + b;
+}
+
+final plus(int a, int b) {
+        return a + b;
+}
+
+@Test2 plus(int a, int b) {
+        return a + b;
+}
+
+@Test2
+int plus(int a, int b) {
+        return a + b;
+}
+
+@Test2
+final int plus(int a, int b) {
+        return a + b;
+}
+
+@Test2
+@Test3
+synchronized final int plus(int a, int b) {
+        return a + b;
+}
+
+
+public void someMethod (java.lang.Class<String> clazz) {}
+public void someMethod2 (java.lang.Class clazz) {}
+public boolean someMethod3 (java.util.List<String> list) {
+        list instanceof java.util.List
+}
+
+/* return element i,j of infinite matrix A */
+def A(i, j) {
+        return 1.0D / ((i+j) * (i + j + 1.0D) / 2.0D  + i + 1.0D)
+}
+
+String m(Integer a, ... params) {}

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/MethodPointer_01x.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/MethodPointer_01x.groovy b/subprojects/parser-antlr4/src/test/resources/core/MethodPointer_01x.groovy
new file mode 100644
index 0000000..eaddb93
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/MethodPointer_01x.groovy
@@ -0,0 +1,23 @@
+/*
+ *  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.
+ */
+def shell = new GroovyShell()
+assert shell.evaluate("x = String.&toUpperCase; x('abc')") == "ABC"
+assert shell.evaluate("x = 'abc'.&toUpperCase; x()") == "ABC"
+assert shell.evaluate("x = Integer.&parseInt; x('123')") == 123
+assert shell.evaluate("x = 3.&parseInt; x('123')") == 123
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/MethodReference_01x.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/MethodReference_01x.groovy b/subprojects/parser-antlr4/src/test/resources/core/MethodReference_01x.groovy
new file mode 100644
index 0000000..a31b5b8
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/MethodReference_01x.groovy
@@ -0,0 +1,103 @@
+/*
+ *  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.
+ */
+import java.util.stream.Collectors
+
+// class::staticMethod
+assert ['1', '2', '3'] == [1, 2, 3].stream().map(Integer::toString).collect(Collectors.toList())
+
+// class::instanceMethod
+assert ['A', 'B', 'C'] == ['a', 'b', 'c'].stream().map(String::toUpperCase).collect(Collectors.toList())
+
+
+
+def robot = new Robot();
+
+// instance::instanceMethod
+assert ['Hi, Jochen', 'Hi, Paul', 'Hi, Daniel'] == [new Person('Jochen'), new Person('Paul'), new Person('Daniel')].stream().map(robot::greet).collect(Collectors.toList())
+
+// class::staticMethod
+assert ['Jochen', 'Paul', 'Daniel'] == [new Person('Jochen'), new Person('Paul'), new Person('Daniel')].stream().map(Person::getText).collect(Collectors.toList())
+assert ['Jochen', 'Paul', 'Daniel'] == [new Person('Jochen'), new Person('Paul'), new Person('Daniel')].stream().map(BasePerson::getText).collect(Collectors.toList())
+
+// instance::staticMethod
+assert ['J', 'P', 'D'] == [new Person('Jochen'), new Person('Paul'), new Person('Daniel')].stream().map(robot::firstCharOfName).collect(Collectors.toList())
+
+// class::instanceMethod
+assert ['Jochen', 'Paul', 'Daniel'] == [new Person('Jochen'), new Person('Paul'), new Person('Daniel')].stream().map(Person::getName).collect(Collectors.toList())
+
+
+// ----------------------------------
+class BasePerson {
+    public static String getText(Person p) {
+        return p.name;
+    }
+}
+
+class Person extends BasePerson {
+    private String name;
+
+    public Person(String name) {
+        this.name = name
+    }
+
+    public String getName() {
+        return this.name;
+    }
+
+}
+class Robot {
+    public String greet(Person p) {
+        return "Hi, ${p.name}"
+    }
+
+    public static char firstCharOfName(Person p) {
+        return p.getName().charAt(0);
+    }
+}
+
+def mr = String::toUpperCase
+assert 'ABC' == mr('abc')
+assert 'ABC' == String::toUpperCase('abc')
+
+assert new HashSet() == HashSet::new()
+assert new String() == String::new()
+assert 1 == Integer::new(1)
+assert new String[0] == String[]::new(0)
+assert new String[0] == String[]::new('0')
+assert new String[1][2] == String[][]::new(1, 2)
+assert new String[1][2][3] == String[][][]::new(1, 2, 3)
+
+assert [new String[1], new String[2], new String[3]] == [1, 2, 3].stream().map(String[]::new).collect(Collectors.toList())
+assert [1, 2, 3] as String[] == [1, 2, 3].stream().map(String::valueOf).toArray(String[]::new)
+
+
+def a = String[][]::new(1, 2)
+def b = new String[1][2]
+assert a.class == b.class && a == b
+
+a = String[][][]::new(1, 2)
+b = new String[1][2][]
+assert a.class == b.class && a == b
+
+a = String[][][][]::new(1, 2)
+b = new String[1][2][][]
+assert a.class == b.class && a == b
+
+
+

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/NegativeRelationalOperators_01x.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/NegativeRelationalOperators_01x.groovy b/subprojects/parser-antlr4/src/test/resources/core/NegativeRelationalOperators_01x.groovy
new file mode 100644
index 0000000..7c91cd3
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/NegativeRelationalOperators_01x.groovy
@@ -0,0 +1,39 @@
+/*
+ *  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.
+ */
+assert 'a' instanceof String
+assert 'a' !instanceof Integer
+assert 1 !instanceof String
+assert null !instanceof String
+assert 1 in [1, 2]
+assert 3 !in [1, 2]
+assert 3 !in ['1', '2']
+assert '3' !in [1, 2]
+assert '3' !in ['1', '2']
+assert null !in ['1', '2']
+assert null !in [1, 2]
+
+boolean interesting = false
+assert !interesting
+
+boolean instanceofboolean = false
+assert !instanceofboolean
+
+assert 1 !in[2, 3]
+assert 1 !in([2, 3])
+assert 1 !in{return [2, 3]}()

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/NegativeRelationalOperators_02x.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/NegativeRelationalOperators_02x.groovy b/subprojects/parser-antlr4/src/test/resources/core/NegativeRelationalOperators_02x.groovy
new file mode 100644
index 0000000..1400f9f
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/NegativeRelationalOperators_02x.groovy
@@ -0,0 +1,36 @@
+/*
+ *  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.
+ */
+import groovy.transform.CompileStatic
+
+@CompileStatic
+def cs() {
+    assert 'a' instanceof String
+    assert 'a' !instanceof Integer
+    assert 1 !instanceof String
+    assert null !instanceof String
+    assert 1 in [1, 2]
+    assert 3 !in [1, 2]
+    assert 3 !in ['1', '2']
+    assert '3' !in [1, 2]
+    assert '3' !in ['1', '2']
+    assert null !in ['1', '2']
+    assert null !in [1, 2]
+}
+
+cs();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_01.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_01.groovy b/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_01.groovy
new file mode 100644
index 0000000..17619c2
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_01.groovy
@@ -0,0 +1,19 @@
+/*
+ *  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 com.groovyhelp.core
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_02.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_02.groovy b/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_02.groovy
new file mode 100644
index 0000000..ec6d67f
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_02.groovy
@@ -0,0 +1,19 @@
+/*
+ *  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 com.groovyhelp.core

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_03.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_03.groovy b/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_03.groovy
new file mode 100644
index 0000000..6114f1c
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_03.groovy
@@ -0,0 +1,19 @@
+/*
+ *  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 com.groovyhelp.core;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_04.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_04.groovy b/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_04.groovy
new file mode 100644
index 0000000..88b48aa
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_04.groovy
@@ -0,0 +1,38 @@
+/*
+ *  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.
+ */
+#!/usr/bin/env groovy
+/*
+ *  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 com.groovyhelp.core;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_05.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_05.groovy b/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_05.groovy
new file mode 100644
index 0000000..c60b3c3
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_05.groovy
@@ -0,0 +1,41 @@
+/*
+ *  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.
+ */
+#!/usr/bin/env groovy
+/*
+ *  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 com.groovyhelp.core;
+/**
+ * Created by Daniel.Sun on 2016/08/17.
+ */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_06.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_06.groovy b/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_06.groovy
new file mode 100644
index 0000000..313cc8f
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/PackageDeclaration_06.groovy
@@ -0,0 +1,19 @@
+/*
+ *  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 def.in.as.trait;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/Return_01.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/Return_01.groovy b/subprojects/parser-antlr4/src/test/resources/core/Return_01.groovy
new file mode 100644
index 0000000..2f0f983
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/Return_01.groovy
@@ -0,0 +1,26 @@
+/*
+ *  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.
+ */
+return
+return;
+return 1;
+return 2
+return
+3;
+return
+4
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/SafeIndex_01x.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/SafeIndex_01x.groovy b/subprojects/parser-antlr4/src/test/resources/core/SafeIndex_01x.groovy
new file mode 100644
index 0000000..1cbcf66
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/SafeIndex_01x.groovy
@@ -0,0 +1,28 @@
+/*
+ *  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.
+ */
+assert null == null?[1];
+assert null == null?[1]?[1, 2];
+assert null == null?[1]?[1, 2]?[1, 2, 3];
+
+def a = null;
+assert null == a?[1, 2];
+
+def f() {return null}
+assert null == f()?[1];
+

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/SafeIndex_02x.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/SafeIndex_02x.groovy b/subprojects/parser-antlr4/src/test/resources/core/SafeIndex_02x.groovy
new file mode 100644
index 0000000..aa13c83
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/SafeIndex_02x.groovy
@@ -0,0 +1,65 @@
+/*
+ *  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.
+ */
+import groovy.transform.*
+
+class SomeContainer {
+    public Object getAt(int i) {
+        return "123";
+    }
+
+    public void putAt(int i, Object obj) {
+    }
+}
+
+def safe() {
+    List list = null;
+    assert null == list?[1];
+    list?[1] = 'a';
+    assert null == list?[1];
+
+    Map map = null;
+    assert null == map?[1];
+    map?[1] = 'a';
+    assert null == map?[1];
+
+    SomeContainer sc = null;
+    assert null == sc?[1];
+    sc?[1] = 'a';
+    assert null == sc?[1];
+}
+safe();
+
+@CompileStatic
+def csSafe() {
+    List list = null;
+    assert null == list?[1];
+    list?[1] = 'a';
+    assert null == list?[1];
+
+    Map map = null;
+    assert null == map?[1];
+    map?[1] = 'a';
+    assert null == map?[1];
+
+    SomeContainer sc = null;
+    assert null == sc?[1];
+    sc?[1] = 'a';
+    assert null == sc?[1];
+}
+csSafe();

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/SafeIndex_03x.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/SafeIndex_03x.groovy b/subprojects/parser-antlr4/src/test/resources/core/SafeIndex_03x.groovy
new file mode 100644
index 0000000..d94d414
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/SafeIndex_03x.groovy
@@ -0,0 +1,298 @@
+/*
+ *  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.
+ */
+import groovy.transform.*
+
+@CompileStatic
+def csObjArray() {
+    String[] array = ['a', 'b'];
+    assert 'b' == array?[1];
+
+    array?[1] = 'c';
+    assert 'c' == array?[1];
+
+    array = null;
+    assert null == array?[1];
+
+    array?[1] = 'c';
+    assert null == array?[1];
+}
+csObjArray();
+
+def objArray() {
+    String[] array = ['a', 'b'];
+    assert 'b' == array?[1];
+
+    array?[1] = 'c';
+    assert 'c' == array?[1];
+
+    array = null;
+    assert null == array?[1];
+
+    array?[1] = 'c';
+    assert null == array?[1];
+}
+objArray();
+
+@CompileStatic
+def csBooleanArray() {
+    boolean[] array = [true, false];
+    assert false == array?[1];
+
+    array?[1] = true;
+    assert true == array?[1];
+
+    array = null;
+    assert null == array?[1];
+
+    array?[1] = true;
+    assert null == array?[1];
+}
+csBooleanArray();
+
+def booleanArray() {
+    boolean[] array = [true, false];
+    assert false == array?[1];
+
+    array?[1] = true;
+    assert true == array?[1];
+
+    array = null;
+    assert null == array?[1];
+
+    array?[1] = true;
+    assert null == array?[1];
+}
+booleanArray();
+
+@CompileStatic
+def csCharArray() {
+    char[] array = ['a' as char, 'b' as char];
+    assert ('b' as char) == array?[1];
+
+    array?[1] = 'c';
+    assert ('c' as char) == array?[1];
+
+    array = null;
+    assert null == array?[1];
+
+    array?[1] = 'c';
+    assert null == array?[1];
+}
+csCharArray();
+
+def charArray() {
+    char[] array = ['a' as char, 'b' as char];
+    assert ('b' as char) == array?[1];
+
+    array?[1] = 'c';
+    assert ('c' as char) == array?[1];
+
+    array = null;
+    assert null == array?[1];
+
+    array?[1] = 'c';
+    assert null == array?[1];
+}
+charArray();
+
+@CompileStatic
+def csByteArray() {
+    byte[] array = [1 as byte, 2 as byte];
+    assert (2 as byte) == array?[1];
+
+    array?[1] = 3 as byte;
+    assert (3 as byte) == array?[1];
+
+    array = null;
+    assert null == array?[1];
+
+    array?[1] = 3 as byte;
+    assert null == array?[1];
+}
+csByteArray();
+
+def byteArray() {
+    byte[] array = [1 as byte, 2 as byte];
+    assert (2 as byte) == array?[1];
+
+    array?[1] = 3 as byte;
+    assert (3 as byte) == array?[1];
+
+    array = null;
+    assert null == array?[1];
+
+    array?[1] = 3 as byte;
+    assert null == array?[1];
+}
+byteArray();
+
+@CompileStatic
+def csShortArray() {
+    short[] array = [1 as short, 2 as short];
+    assert (2 as short) == array?[1];
+
+    array?[1] = 3 as short;
+    assert (3 as short) == array?[1];
+
+    array = null;
+    assert null == array?[1];
+
+    array?[1] = 3 as short;
+    assert null == array?[1];
+}
+csShortArray();
+
+def shortArray() {
+    short[] array = [1 as short, 2 as short];
+    assert (2 as short) == array?[1];
+
+    array?[1] = 3 as short;
+    assert (3 as short) == array?[1];
+
+    array = null;
+    assert null == array?[1];
+
+    array?[1] = 3 as short;
+    assert null == array?[1];
+}
+shortArray();
+
+@CompileStatic
+def csIntArray() {
+    int[] array = [1, 2];
+    assert 2 == array?[1];
+
+    array?[1] = 3;
+    assert 3 == array?[1];
+
+    array = null;
+    assert null == array?[1];
+
+    array?[1] = 3;
+    assert null == array?[1];
+}
+csIntArray();
+
+def intArray() {
+    int[] array = [1, 2];
+    assert 2 == array?[1];
+
+    array?[1] = 3;
+    assert 3 == array?[1];
+
+    array = null;
+    assert null == array?[1];
+
+    array?[1] = 3;
+    assert null == array?[1];
+}
+intArray();
+
+@CompileStatic
+def csLongArray() {
+    long[] array = [1L, 2L];
+    assert 2L == array?[1];
+
+    array?[1] = 3L;
+    assert 3L == array?[1];
+
+    array = null;
+    assert null == array?[1];
+
+    array?[1] = 3L;
+    assert null == array?[1];
+}
+csLongArray();
+
+def longArray() {
+    long[] array = [1L, 2L];
+    assert 2L == array?[1];
+
+    array?[1] = 3L;
+    assert 3L == array?[1];
+
+    array = null;
+    assert null == array?[1];
+
+    array?[1] = 3L;
+    assert null == array?[1];
+}
+longArray();
+
+@CompileStatic
+def csFloatArray() {
+    float[] array = [1.1f, 2.2f];
+    assert 2.2f == array?[1];
+
+    array?[1] = 3.3f;
+    assert 3.3f == array?[1];
+
+    array = null;
+    assert null == array?[1];
+
+    array?[1] = 3.3f;
+    assert null == array?[1];
+}
+csFloatArray();
+
+def floatArray() {
+    float[] array = [1.1f, 2.2f];
+    assert 2.2f == array?[1];
+
+    array?[1] = 3.3f;
+    assert 3.3f == array?[1];
+
+    array = null;
+    assert null == array?[1];
+
+    array?[1] = 3.3f;
+    assert null == array?[1];
+}
+floatArray();
+
+@CompileStatic
+def csDoubleArray() {
+    double[] array = [1.1d, 2.2d];
+    assert 2.2d == array?[1];
+
+    array?[1] = 3.3d;
+    assert 3.3d == array?[1];
+
+    array = null;
+    assert null == array?[1];
+
+    array?[1] = 3.3d;
+    assert null == array?[1];
+}
+csDoubleArray();
+
+def doubleArray() {
+    double[] array = [1.1d, 2.2d];
+    assert 2.2d == array?[1];
+
+    array?[1] = 3.3d;
+    assert 3.3d == array?[1];
+
+    array = null;
+    assert null == array?[1];
+
+    array?[1] = 3.3d;
+    assert null == array?[1];
+}
+doubleArray();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/Script_01x.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/Script_01x.groovy b/subprojects/parser-antlr4/src/test/resources/core/Script_01x.groovy
new file mode 100644
index 0000000..0e47db0
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/Script_01x.groovy
@@ -0,0 +1,23 @@
+/*
+ *  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.
+ */
+protected String getGroovySql() {
+    return "abc"
+}
+
+assert "abc" == getGroovySql()

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/Switch_01.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/Switch_01.groovy b/subprojects/parser-antlr4/src/test/resources/core/Switch_01.groovy
new file mode 100644
index 0000000..f26d15b
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/Switch_01.groovy
@@ -0,0 +1,78 @@
+/*
+ *  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.
+ */
+switch (a) {
+    case 1:
+        break;
+    case 2:
+        break;
+}
+
+switch (a) {
+    case 1:
+        break;
+    case 2:
+        break;
+    default:
+        break;
+}
+
+switch (a) {
+    case 1:
+    case 2:
+        break;
+    case 3:
+        break;
+    default:
+        break;
+}
+
+switch (a) {
+    case 1:
+    case 2 + 3:
+        break;
+    case 3:
+        break;
+    case 4 + 2:
+    case 5:
+    default:
+        break;
+}
+
+switch (a) {
+    case 1:
+    case 2 + 3: break;
+    case 3: break;
+    case 4 + 2:
+    case 5:
+    default: break;
+}
+
+switch (a) {case 1:
+    case 2 + 3: break;
+    case 3: break;
+    case 4 + 2:
+    case 5:
+    default: break;}
+
+switch (a) {
+    case 1:
+        int x = 1;
+    default:
+        int y = 2;
+}

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/Synchronized_01.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/Synchronized_01.groovy b/subprojects/parser-antlr4/src/test/resources/core/Synchronized_01.groovy
new file mode 100644
index 0000000..bc1bc88
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/Synchronized_01.groovy
@@ -0,0 +1,54 @@
+/*
+ *  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.
+ */
+synchronized ('a')
+{
+    assert true
+}
+
+synchronized ('a') {
+    assert true
+}
+
+synchronized ('a') {assert true
+}
+
+synchronized ('a') {assert true}
+
+synchronized ('a') {assert true;}
+
+synchronized ('a') {
+    assert true
+    assert true
+}
+
+synchronized ('a') {
+    assert true;
+    assert true
+}
+
+synchronized ('a') {
+    assert true; assert true
+}
+
+synchronized ('a') {assert true; assert true
+}
+
+synchronized ('a') {assert true; assert true}
+
+synchronized ('a') {assert true; assert true;}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/Throw_01.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/Throw_01.groovy b/subprojects/parser-antlr4/src/test/resources/core/Throw_01.groovy
new file mode 100644
index 0000000..f78903c
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/Throw_01.groovy
@@ -0,0 +1,20 @@
+/*
+ *  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.
+ */
+throw e;
+throw e
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_01.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_01.groovy b/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_01.groovy
new file mode 100644
index 0000000..b5ed026
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_01.groovy
@@ -0,0 +1,60 @@
+/*
+ *  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 core
+
+trait A {}
+trait B<T> {}
+trait C<T extends A> {}
+trait D<T extends A & B> {}
+trait E<T extends A & B & C> {}
+trait F<T extends A & B & C> extends A {}
+trait F2 extends A<T> {}
+trait G1<T extends A & B & C> extends A implements X {}
+trait G2<T extends A & B & C> extends A<T> implements X<T> {}
+trait G3                      extends A<T> implements X<T> {}
+trait G4                      extends A    implements X<T> {}
+trait G5                      extends A    implements X    {}
+trait G2<T extends A & B & C> extends A<T> implements X<T> {}
+trait H<T extends A & B & C> extends A implements X, Y {}
+trait I<T extends A & B & C> extends A implements X, Y, Z {}
+public trait J<T extends A & B & C> extends A implements X, Y, Z {}
+@Test2 public trait K<T extends A & B & C> extends A implements X, Y, Z {}
+@Test2 @Test3 public trait L<T extends A & B & C> extends A implements X, Y, Z {}
+
+@Test2
+@Test3
+public
+trait M
+<
+        T extends
+        A &
+        B &
+        C
+>
+extends
+A
+implements
+X,
+Y,
+Z
+        {
+
+        }
+
+trait t {}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_02.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_02.groovy b/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_02.groovy
new file mode 100644
index 0000000..6820b1f
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_02.groovy
@@ -0,0 +1,58 @@
+/*
+ *  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.
+ */
+trait AA {
+    {
+        println 123
+    }
+}
+
+trait BB {
+    static {
+        println '123'
+    }
+}
+
+trait CC {
+    static
+    {
+        println '123'
+    }
+}
+
+trait DD {
+    static {
+        println '123'
+    }
+
+    {
+        println 'abc'
+    }
+
+    static {
+        println '234'
+    }
+
+    {
+        println 'bcd'
+    }
+}
+
+trait EE {{}}
+trait FF {static {}}
+trait GG {static {};{}}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_03.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_03.groovy b/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_03.groovy
new file mode 100644
index 0000000..2a68103
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_03.groovy
@@ -0,0 +1,66 @@
+/*
+ *  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.
+ */
+import java.sql.SQLException
+
+trait AAA {
+    public AAA() {
+
+    }
+
+    public AAA(String name) {
+
+    }
+
+    @Test2
+    public AAA(String name, int age) throws Exception {
+
+    }
+
+    AAA(String name, int age, String title) throws Exception {
+
+    }
+
+    private AAA(String name, int age, String title, double income) throws Exception {
+
+    }
+
+    @Test2
+    public String sayHello(String name) {
+        return "Hello, $name";
+    }
+
+    @Test2
+    public <T> T sayHello2(T name) throws IOException, SQLException {
+        return "Hello, $name";
+    }
+
+    public static privateStaticMethod(){}
+
+    public void m(final int param) {}
+    public void m2(def param) {}
+    public void m3(final int param1, long param2, final String param3) {}
+
+    def "hello world"(p1, p2) {
+        println "$p1, $p2"
+    }
+
+    def run() {
+        this."hello world"('ab', 'bc')
+    }
+}

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_04.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_04.groovy b/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_04.groovy
new file mode 100644
index 0000000..7cd679c
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_04.groovy
@@ -0,0 +1,46 @@
+/*
+ *  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.
+ */
+public trait Person {
+    public static final SOME_CONSTANT = 'SOME_CONSTANT';
+    private String name = 'Daniel';
+    private int age;
+    @Test2
+    private String country = 'China',
+            location = 'Shanghai';
+
+    private String field, field2 = 'field2';
+    String someProperty;
+    String someProperty2 = 'someProperty2';
+    String someProperty3 = 'someProperty3',
+            someProperty4 = 'someProperty4';
+    String someProperty5, someProperty6 = 'someProperty6';
+    final String someProperty7 = 'someProperty7';
+    static final String someProperty8 = 'someProperty8';
+
+    @Test3
+    static final String someProperty9 = 'someProperty9';
+
+    protected static def protectedStaticDefField;
+}
+
+trait xx {
+    class yy {
+        enum zz {}
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_05.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_05.groovy b/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_05.groovy
new file mode 100644
index 0000000..625074e
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/TraitDeclaration_05.groovy
@@ -0,0 +1,41 @@
+/*
+ *  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.
+ */
+trait SwimmingAbility {
+    def swim() {
+        prt("swimming..")
+    }
+
+    abstract String prt(String msg);
+}
+
+trait FlyingAbility {
+    def fly() {
+        println "flying.."
+    }
+}
+
+class Duck implements SwimmingAbility, FlyingAbility {
+    String prt(String msg) {
+        println msg + " happily";
+    }
+}
+
+def duck = new Duck()
+duck.swim()
+duck.fly()

http://git-wip-us.apache.org/repos/asf/groovy/blob/73acbcfe/subprojects/parser-antlr4/src/test/resources/core/TryCatch_01.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/TryCatch_01.groovy b/subprojects/parser-antlr4/src/test/resources/core/TryCatch_01.groovy
new file mode 100644
index 0000000..d09e1c3
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/TryCatch_01.groovy
@@ -0,0 +1,130 @@
+/*
+ *  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.
+ */
+import java.sql.SQLException
+
+try {
+    assert true;
+} finally {
+    return 0;
+}
+
+try {
+    assert true;
+} catch(Exception e) {
+    assert false;
+}
+
+try {
+    assert true;
+} catch(Exception
+            e) {
+    assert false;
+}
+
+try {
+    assert true;
+} catch(e) {
+    assert false;
+}
+
+try {
+    assert true;
+} catch(e) {
+    assert false;
+} catch(t) {
+    assert false;
+}
+
+try {
+    assert true;
+} catch(final e) {
+    assert false;
+}
+
+try {
+    assert true;
+} catch(final Exception e) {
+    assert false;
+}
+
+try {
+    assert true;
+} catch(IOException e) {
+    assert false;
+} catch(Exception e) {
+    assert false;
+}
+
+try {
+    assert true;
+} catch(IOException e) {
+    assert false;
+} catch(Exception e) {
+    assert false;
+} finally {
+    return 0;
+}
+
+try
+{
+    assert true;
+}
+catch(IOException e)
+{
+    assert false;
+}
+catch(Exception e)
+{
+    assert false;
+}
+finally
+{
+    return 0;
+}
+
+try {
+    assert true;
+} catch(Exception e) {
+    assert false;
+} finally {
+    return 0;
+}
+
+try {
+    assert true;
+} catch(NullPointerException | IOException e) {
+    assert false;
+} finally {
+    return 0;
+}
+
+try {
+    assert true;
+} catch(NullPointerException | IOException e) {
+    assert false;
+}
+
+try {
+    assert true;
+} catch(NullPointerException |
+        IOException |
+        SQLException
+                e) {
+    assert false;
+}