Index: compiler/javatests/com/google/dart/compiler/parser/CommentTest.java |
diff --git a/compiler/javatests/com/google/dart/compiler/parser/CommentTest.java b/compiler/javatests/com/google/dart/compiler/parser/CommentTest.java |
index dee5e3a4dbadd83c3b3ebbb9eded51963bf1a15e..859baaa93c0e0e97f331f6a4e63e335f82d90ef1 100644 |
--- a/compiler/javatests/com/google/dart/compiler/parser/CommentTest.java |
+++ b/compiler/javatests/com/google/dart/compiler/parser/CommentTest.java |
@@ -4,14 +4,16 @@ |
package com.google.dart.compiler.parser; |
+import com.google.common.collect.Lists; |
import com.google.dart.compiler.CompilerTestCase; |
import com.google.dart.compiler.DartCompilerListener; |
import com.google.dart.compiler.Source; |
+import com.google.dart.compiler.ast.DartComment; |
import com.google.dart.compiler.ast.DartDeclaration; |
import com.google.dart.compiler.ast.DartNode; |
import com.google.dart.compiler.ast.DartUnit; |
+import com.google.dart.compiler.common.SourceInfo; |
-import java.util.ArrayList; |
import java.util.List; |
/** |
@@ -19,50 +21,6 @@ import java.util.List; |
* in the javadoc for <code>DartScanner.recordCommentLocation().</code> |
*/ |
public class CommentTest extends CompilerTestCase { |
- |
- /** |
- * A parser context that uses its own scanner. |
- */ |
- class CommentParserContext extends DartScannerParserContext { |
- |
- CommentParserContext(Source source, String sourceCode, |
- DartCompilerListener listener) { |
- super(source, sourceCode, listener); |
- } |
- |
- @Override |
- protected DartScanner createScanner(String sourceCode) { |
- return new CommentScanner(sourceCode); |
- } |
- } |
- |
- /** |
- * A specialized scanner that records comment locations. It would have been |
- * more natural to use the parser context to record comments, but the |
- * scanner doesn't know about the context. |
- */ |
- class CommentScanner extends DartScanner { |
- |
- CommentScanner(String sourceCode) { |
- super(sourceCode); |
- } |
- |
- @Override |
- protected void recordCommentLocation(int start, int stop, int line, int col) { |
- int size = commentLocs.size(); |
- if (size > 0) { |
- // check for duplicates |
- int[] loc = commentLocs.get(size - 1); |
- // use <= to allow parser to back up more than one token |
- if (start <= loc[0] && stop <= loc[1]) { |
- return; |
- } |
- } |
- commentLocs.add(new int[]{start, stop}); |
- } |
- } |
- |
- private List<int[]> commentLocs = new ArrayList<int[]>(); |
private String source; |
private static String[] EXPECTED001 = {"/*\n * Beginning comment\n */", |
@@ -71,14 +29,14 @@ public class CommentTest extends CompilerTestCase { |
private static String[] EXPECTED002 = {"/*\n*\n //comment\nX Y"}; |
public void test001() { |
- parseUnit("Comments.dart"); |
- compareComments(EXPECTED001); |
+ DartUnit unit = parseUnit("Comments.dart"); |
+ compareComments(unit, EXPECTED001); |
} |
public void test002() { |
- parseUnitErrors("BadCommentNegativeTest.dart", |
+ DartUnit unit = parseUnitErrors("BadCommentNegativeTest.dart", |
"Unexpected token 'ILLEGAL' (expected end of file)", 1, 1); |
- compareComments(EXPECTED002); |
+ compareComments(unit, EXPECTED002); |
} |
public void test003() { |
@@ -88,25 +46,24 @@ public class CommentTest extends CompilerTestCase { |
} |
@Override |
- protected ParserContext makeParserContext(Source src, String sourceCode, |
- DartCompilerListener listener) { |
- // initializing source and commentLocs here is a bit of a hack but it |
- // means parseUnit() and parseUnitErrors() do not have to be overridden |
+ protected DartParser makeParser(Source src, String sourceCode, DartCompilerListener listener) { |
source = sourceCode; |
- commentLocs.clear(); |
- return new CommentParserContext(src, sourceCode, listener); |
+ return super.makeParser(src, sourceCode, listener); |
} |
- private List<String> extractComments() { |
- List<String> comments = new ArrayList<String>(); |
- for (int[] loc : commentLocs) { |
- comments.add(source.substring(loc[0], loc[1])); |
+ private List<String> extractComments(DartUnit unit) { |
+ List<String> comments = Lists.newArrayList(); |
+ List<DartComment> commentNodes = unit.getComments(); |
+ for (DartComment commentNode : commentNodes) { |
+ SourceInfo sourceInfo = commentNode.getSourceInfo(); |
+ String comment = source.substring(sourceInfo.getOffset(), sourceInfo.getEnd()); |
+ comments.add(comment); |
} |
return comments; |
} |
- private void compareComments(String[] expected) { |
- List<String> comments = extractComments(); |
+ private void compareComments(DartUnit unit, String[] expected) { |
+ List<String> comments = extractComments(unit); |
assertEquals(expected.length, comments.size()); |
for (int i = 0; i < expected.length; i++) { |
assertEquals(expected[i], comments.get(i)); |