diff options
9 files changed, 20 insertions, 44 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java b/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java index b5cbc92aef..5135dd3573 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java @@ -840,16 +840,6 @@ public final class Lexer { } /** - * Returns the character in the input buffer at the given position. - * - * @param at the position to get the character at. - * @return the character at the given position. - */ - public char charAt(int at) { - return buffer[at]; - } - - /** * Returns the string at the current line, minus the new line. * * @param line the line from which to retrieve the String, 1-based diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java index e499907777..fd9711737a 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java @@ -606,9 +606,8 @@ public class Parser { private StringLiteral parseStringLiteral() { Preconditions.checkState(token.kind == TokenKind.STRING); int end = token.right; - char quoteChar = lexer.charAt(token.left); StringLiteral literal = - setLocation(new StringLiteral((String) token.value, quoteChar), token.left, end); + setLocation(new StringLiteral((String) token.value), token.left, end); nextToken(); if (token.kind == TokenKind.STRING) { @@ -957,9 +956,7 @@ public class Parser { if (expr instanceof StringLiteral && secondary instanceof StringLiteral) { StringLiteral left = (StringLiteral) expr; StringLiteral right = (StringLiteral) secondary; - if (left.getQuoteChar() == right.getQuoteChar()) { - return new StringLiteral(left.getValue() + right.getValue(), left.getQuoteChar()); - } + return new StringLiteral(left.getValue() + right.getValue()); } } return new BinaryOperatorExpression(operator, expr, secondary); diff --git a/src/main/java/com/google/devtools/build/lib/syntax/StringLiteral.java b/src/main/java/com/google/devtools/build/lib/syntax/StringLiteral.java index b2526a0646..640d007454 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/StringLiteral.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/StringLiteral.java @@ -18,16 +18,13 @@ package com.google.devtools.build.lib.syntax; */ public final class StringLiteral extends Literal<String> { - private final char quoteChar; - - public StringLiteral(String value, char quoteChar) { + public StringLiteral(String value) { super(value); - this.quoteChar = quoteChar; } @Override public String toString() { - return quoteChar + value.replace(Character.toString(quoteChar), "\\" + quoteChar) + quoteChar; + return Printer.repr(value); } @Override @@ -35,16 +32,6 @@ public final class StringLiteral extends Literal<String> { visitor.visit(this); } - /** - * Gets the quote character that was used for this string. For example, if - * the string was 'hello, world!', then this method returns '\''. - * - * @return the character used to quote the string. - */ - public char getQuoteChar() { - return quoteChar; - } - @Override void validate(ValidationEnvironment env) throws EvalException { } diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java index 743c68236f..bf366466ab 100644 --- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java +++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java @@ -323,7 +323,7 @@ public class SkylarkIntegrationTest extends BuildViewTestCase { "\tFile \"/workspace/test/skylark/functions.bzl\", line 2, in first", "\t\tsecond(a, b)", "\tFile \"/workspace/test/skylark/functions.bzl\", line 5, in second", - "\t\tthird('legal')", + "\t\tthird(\"legal\")", "\tFile \"/workspace/test/skylark/functions.bzl\", line 7, in third", errorMessage); scratch.file( @@ -756,7 +756,7 @@ public class SkylarkIntegrationTest extends BuildViewTestCase { target.getProvider(FileProvider.class).getFilesToBuild())) .containsExactly("foo.txt"); } - + @Test public void testRuleClassImplicitOutputs() throws Exception { scratch.file( diff --git a/src/test/java/com/google/devtools/build/lib/syntax/EnvironmentTest.java b/src/test/java/com/google/devtools/build/lib/syntax/EnvironmentTest.java index 6f1904422d..71e9cec416 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/EnvironmentTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/EnvironmentTest.java @@ -185,8 +185,8 @@ public class EnvironmentTest extends EvaluationTestCase { @Test public void testToString() throws Exception { - update("subject", new StringLiteral("Hello, 'world'.", '\'')); - update("from", new StringLiteral("Java", '"')); + update("subject", new StringLiteral("Hello, 'world'.")); + update("from", new StringLiteral("Java")); assertThat(getEnvironment().toString()).isEqualTo("<Environment[test]>"); } diff --git a/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java index 4a71755ab2..f217591bb8 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java @@ -521,7 +521,7 @@ public class EvaluationTest extends EvaluationTestCase { public void testDictComprehensions_ToString() throws Exception { assertEquals("{x: x for x in [1, 2]}", parseExpression("{x : x for x in [1, 2]}").toString()); - assertEquals("{x + 'a': x for x in [1, 2]}", + assertEquals("{x + \"a\": x for x in [1, 2]}", parseExpression("{x + 'a' : x for x in [1, 2]}").toString()); } diff --git a/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java b/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java index 17599d785a..55867c6d1b 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java @@ -363,7 +363,7 @@ public class MethodLibraryTest extends EvaluationTestCase { + LINE_SEPARATOR + "\tFile \"\", line 7, in bar" + LINE_SEPARATOR - + "\t\t'test'.index(x)", + + "\t\t\"test\".index(x)", "def foo():", " bar(1)", "def bar(x):", @@ -421,7 +421,7 @@ public class MethodLibraryTest extends EvaluationTestCase { + LINE_SEPARATOR + "\tFile \"\", line 5, in bar" + LINE_SEPARATOR - + "\t\t'test'.index(x)" + + "\t\t\"test\".index(x)" + LINE_SEPARATOR + "method string.index(sub: string, start: int, end: int or NoneType) " + "is not applicable " diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java index 43f6bcfe85..db96a9de38 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java @@ -224,7 +224,7 @@ public class ParserTest extends EvaluationTestCase { @Test public void testStringLiteralOptimizationToString() throws Exception { StringLiteral l = (StringLiteral) parseExpression("'abc' + 'def'"); - assertEquals("'abcdef'", l.toString()); + assertEquals("\"abcdef\"", l.toString()); } @Test @@ -236,7 +236,9 @@ public class ParserTest extends EvaluationTestCase { @Test public void testStringLiteralOptimizationDifferentQuote() throws Exception { - assertThat(parseExpression("'abc' + \"def\"")).isInstanceOf(BinaryOperatorExpression.class); + StringLiteral l = (StringLiteral) parseExpression("'abc' + \"def\""); + assertEquals(0, l.getLocation().getStartOffset()); + assertEquals(13, l.getLocation().getEndOffset()); } @Test @@ -443,8 +445,8 @@ public class ParserTest extends EvaluationTestCase { assertEquals("[x[1::2]\n]", parseFile("x[1::2]").toString()); assertEquals("[x[1:]\n]", parseFile("x[1:]").toString()); assertEquals("[str[42]\n]", parseFile("str[42]").toString()); - assertEquals("[ctx.new_file('hello')\n]", parseFile("ctx.new_file('hello')").toString()); - assertEquals("[new_file('hello')\n]", parseFile("new_file('hello')").toString()); + assertEquals("[ctx.new_file(\"hello\")\n]", parseFile("ctx.new_file('hello')").toString()); + assertEquals("[new_file(\"hello\")\n]", parseFile("new_file(\"hello\")").toString()); } @Test @@ -1044,7 +1046,7 @@ public class ParserTest extends EvaluationTestCase { Label containingFileLabel = Label.parseAbsoluteUnchecked(containingFileLabelString); assertThat(imp.getLabel(containingFileLabel)).named("containingFileLabel()") - .isEqualTo(Label.parseAbsoluteUnchecked(expectedLabelString)); + .isEqualTo(Label.parseAbsoluteUnchecked(expectedLabelString)); int startOffset = stmt.getImport().getLocation().getStartOffset(); int endOffset = stmt.getImport().getLocation().getEndOffset(); @@ -1055,7 +1057,7 @@ public class ParserTest extends EvaluationTestCase { private void invalidImportTest(String importString, String expectedMsg) { setFailFast(false); - parseFileForSkylark("load('" + importString + "', 'fun_test')\n"); + parseFileForSkylark("load('" + importString + "', 'fun_test')\n"); assertContainsError(expectedMsg); } diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java index 2e4ae539bc..85a8f8c725 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java @@ -35,7 +35,7 @@ public class ValidationTest extends EvaluationTestCase { @Test public void testAssignmentNotValidLValue() { - checkError("cannot assign to ''a''", "'a' = 1"); + checkError("cannot assign to '\"a\"'", "'a' = 1"); } @Test |