aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/Lexer.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/Parser.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/StringLiteral.java17
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/syntax/EnvironmentTest.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java14
-rw-r--r--src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java2
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