[1/3] groovy git commit: GROOVY-8467: IOGroovyMethods readLine(Reader) method works in unexpected way

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[1/3] groovy git commit: GROOVY-8467: IOGroovyMethods readLine(Reader) method works in unexpected way

paulk
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_4_X 2ee08f895 -> 934b29d03


GROOVY-8467: IOGroovyMethods readLine(Reader) method works in unexpected way


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/731d1901
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/731d1901
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/731d1901

Branch: refs/heads/GROOVY_2_4_X
Commit: 731d19013a483f1a64ad836b76f64177e7977757
Parents: 893986b
Author: paulk <[hidden email]>
Authored: Thu Feb 8 22:57:28 2018 +1000
Committer: paulk <[hidden email]>
Committed: Thu Feb 8 23:04:32 2018 +1000

----------------------------------------------------------------------
 src/main/org/codehaus/groovy/runtime/IOGroovyMethods.java | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/731d1901/src/main/org/codehaus/groovy/runtime/IOGroovyMethods.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/runtime/IOGroovyMethods.java b/src/main/org/codehaus/groovy/runtime/IOGroovyMethods.java
index 96a26eb..9ec793d 100644
--- a/src/main/org/codehaus/groovy/runtime/IOGroovyMethods.java
+++ b/src/main/org/codehaus/groovy/runtime/IOGroovyMethods.java
@@ -660,11 +660,19 @@ public class IOGroovyMethods extends DefaultGroovyMethodsSupport {
     }
 
     /**
-     * Read a single, whole line from the given Reader.
+     * Read a single, whole line from the given Reader. This method is designed for use with
+     * Readers that support the {@code mark()} operation like BufferReader. It has a fallback
+     * behavior for Readers that don't support mark() but the behavior doesn't correctly
+     * detect multi-character line termination (e.g. carriage return followed by linefeed).
+     * We recommend for Readers that don't support mark() you consider using one of the
+     * following methods instead: eachLine, readLines, or iterator.
      *
      * @param self a Reader
      * @return a line
      * @throws IOException if an IOException occurs.
+     * @see #readLines(java.io.Reader)
+     * @see #iterator(java.io.Reader)
+     * @see #eachLine(java.io.Reader, groovy.lang.Closure)
      * @since 1.0
      */
     public static String readLine(Reader self) throws IOException {

Reply | Threaded
Open this post in threaded view
|

[2/3] groovy git commit: Merge branch 'GROOVY_2_4_X' of http://git-wip-us.apache.org/repos/asf/groovy into GROOVY_2_4_X

paulk
Merge branch 'GROOVY_2_4_X' of http://git-wip-us.apache.org/repos/asf/groovy into GROOVY_2_4_X


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/6411ca70
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/6411ca70
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/6411ca70

Branch: refs/heads/GROOVY_2_4_X
Commit: 6411ca704a9f9f30a2b846bf0d9b4ab1f5ad8b13
Parents: 731d190 2ee08f8
Author: paulk <[hidden email]>
Authored: Mon Feb 12 11:58:05 2018 +1000
Committer: paulk <[hidden email]>
Committed: Mon Feb 12 11:58:05 2018 +1000

----------------------------------------------------------------------
 .../groovy/classgen/AsmClassGenerator.java      |  39 ++--
 src/spec/doc/style-guide.adoc                   |   4 +-
 src/test/groovy/bugs/Groovy8474Bug.groovy       | 222 +++++++++++++++++++
 3 files changed, 247 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


Reply | Threaded
Open this post in threaded view
|

[3/3] groovy git commit: addendum to pr#661 move the examples in question into a test, so they will stay correct

paulk
In reply to this post by paulk
addendum to pr#661 move the examples in question into a test, so they will stay correct


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/934b29d0
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/934b29d0
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/934b29d0

Branch: refs/heads/GROOVY_2_4_X
Commit: 934b29d035637e4cb8690998105f043f64f445b3
Parents: 6411ca7
Author: paulk <[hidden email]>
Authored: Mon Feb 12 11:55:53 2018 +1000
Committer: paulk <[hidden email]>
Committed: Mon Feb 12 11:59:04 2018 +1000

----------------------------------------------------------------------
 src/spec/doc/style-guide.adoc       | 35 +-----------------
 src/spec/test/StyleGuideTest.groovy | 61 ++++++++++++++++++++++++++++++++
 2 files changed, 62 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/934b29d0/src/spec/doc/style-guide.adoc
----------------------------------------------------------------------
diff --git a/src/spec/doc/style-guide.adoc b/src/spec/doc/style-guide.adoc
index baef245..eea447d 100644
--- a/src/spec/doc/style-guide.adoc
+++ b/src/spec/doc/style-guide.adoc
@@ -465,40 +465,7 @@ Here are some examples of those native constructs:
 
 [source,groovy]
 ----
-def list = [1, 4, 6, 9]
-
-// by default, keys are Strings, no need to quote them
-// you can wrap keys with () like [(variableStateAcronym): stateName] to insert a variable or object as a key.
-def map = [CA: 'California', MI: 'Michigan']
-
-// ranges can be inclusive and exclusive
-def range = 10..20 // inclusive
-assert range.size() == 11
-// use brackets if you need to call a method on a range definition
-assert (10..<20).size() == 10 // exclusive
-
-def pattern = ~/fo*/
-
-// equivalent to add()
-list << 5
-
-// call contains()
-assert 4 in list
-assert 5 in list
-assert 15 in range
-
-// subscript notation
-assert list[1] == 4
-
-// add a new key value pair
-map << [WA: 'Washington']
-// subscript notation
-assert map['CA'] == 'California'
-// property notation
-assert map.WA == 'Washington'
-
-// matches() strings against patterns
-assert 'foo' ==~ pattern
+include::{projectdir}/src/spec/test/StyleGuideTest.groovy[tags=data_structures,indent=0]
 ----
 
 == The Groovy Development Kit

http://git-wip-us.apache.org/repos/asf/groovy/blob/934b29d0/src/spec/test/StyleGuideTest.groovy
----------------------------------------------------------------------
diff --git a/src/spec/test/StyleGuideTest.groovy b/src/spec/test/StyleGuideTest.groovy
new file mode 100644
index 0000000..9dd9dd2
--- /dev/null
+++ b/src/spec/test/StyleGuideTest.groovy
@@ -0,0 +1,61 @@
+/*
+ *  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 gls.CompilableTestSupport
+
+class StyleGuideTest extends CompilableTestSupport {
+
+    void testDataStructures() {
+        // tag::data_structures[]
+        def list = [1, 4, 6, 9]
+
+        // by default, keys are Strings, no need to quote them
+        // you can wrap keys with () like [(variableStateAcronym): stateName] to insert a variable or object as a key.
+        def map = [CA: 'California', MI: 'Michigan']
+
+        // ranges can be inclusive and exclusive
+        def range = 10..20 // inclusive
+        assert range.size() == 11
+        // use brackets if you need to call a method on a range definition
+        assert (10..<20).size() == 10 // exclusive
+
+        def pattern = ~/fo*/
+
+        // equivalent to add()
+        list << 5
+
+        // call contains()
+        assert 4 in list
+        assert 5 in list
+        assert 15 in range
+
+        // subscript notation
+        assert list[1] == 4
+
+        // add a new key value pair
+        map << [WA: 'Washington']
+        // subscript notation
+        assert map['CA'] == 'California'
+        // property notation
+        assert map.WA == 'Washington'
+
+        // matches() strings against patterns
+        assert 'foo' ==~ pattern
+        // end::data_structures[]
+    }
+}