From 0f293044a0cfba750be44e1827b8efbb5d6a02df Mon Sep 17 00:00:00 2001 From: Shane Carr Date: Mon, 12 Feb 2018 23:21:27 +0000 Subject: [PATCH] ICU-13461 Fixing build error in Java 6. X-SVN-Rev: 40899 --- .../ibm/icu/impl/number/parse/NumberParserImpl.java | 10 ++-------- .../com/ibm/icu/impl/number/parse/StringSegment.java | 12 ++++++------ .../ibm/icu/dev/test/number/StringSegmentTest.java | 4 ++-- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/NumberParserImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/NumberParserImpl.java index 577cc1f850b..3db8b782aec 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/NumberParserImpl.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/NumberParserImpl.java @@ -307,14 +307,8 @@ public class NumberParserImpl { /** * Creates a new, empty parser. * - * @param ignoreCase - * If true, perform case-folding. This parameter needs to go into the constructor because - * its value is used during the construction of the matcher chain. - * @param optimize - * If true, compute "lead chars" UnicodeSets for the matchers. This reduces parsing - * runtime but increases construction runtime. If the parser is going to be used only once - * or twice, set this to false; if it is going to be used hundreds of times, set it to - * true. + * @param parseFlags + * The parser settings defined in the PARSE_FLAG_* fields. */ public NumberParserImpl(int parseFlags) { matchers = new ArrayList(); diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/StringSegment.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/StringSegment.java index bc0cab0c5d0..eb2b27bc8ee 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/StringSegment.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/StringSegment.java @@ -92,13 +92,13 @@ public class StringSegment implements CharSequence { public int getCodePoint() { assert start < end; char lead = str.charAt(start); - if (Character.isHighSurrogate(lead) && start + 1 < end) { - return Character.toCodePoint(lead, str.charAt(start + 1)); - } else if (Character.isSurrogate(lead)) { - return -1; - } else { - return lead; + char trail; + if (Character.isHighSurrogate(lead) + && start + 1 < end + && Character.isLowSurrogate(trail = str.charAt(start + 1))) { + return Character.toCodePoint(lead, trail); } + return lead; } /** diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/StringSegmentTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/StringSegmentTest.java index cb4106ad934..833df6537e9 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/StringSegmentTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/StringSegmentTest.java @@ -56,10 +56,10 @@ public class StringSegmentTest { StringSegment segment = new StringSegment(SAMPLE_STRING, 0); assertEquals(0x1F4FB, segment.getCodePoint()); segment.setLength(1); - assertEquals(-1, segment.getCodePoint()); + assertEquals(0xD83D, segment.getCodePoint()); segment.resetLength(); segment.adjustOffset(1); - assertEquals(-1, segment.getCodePoint()); + assertEquals(0xDCFB, segment.getCodePoint()); segment.adjustOffset(1); assertEquals(0x20, segment.getCodePoint()); }