aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar brandjon <brandjon@google.com>2017-07-11 21:43:28 +0200
committerGravatar László Csomor <laszlocsomor@google.com>2017-07-12 08:49:58 +0200
commit3b038b9f7657f2d4c77700964ca06d92b3a6db12 (patch)
tree35ce4eeed92225f600744c1f758221760f34ae01
parentbefb8d62100dddffb513b6378f69a3fec10c7dd3 (diff)
Automated rollback of commit 0d2aa6369b09940d584b544fb10796387e0fafa0.
*** Reason for rollback *** PiperOrigin-RevId: 161567104
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/Printer.java6
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkStringRepresentationsTest.java11
-rw-r--r--src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java19
3 files changed, 15 insertions, 21 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Printer.java b/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
index b91237ad72..3a6c60d7e0 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
@@ -387,10 +387,8 @@ public class Printer {
this.append(o.toString());
} else {
- // Other types of objects shouldn't be leaked to Skylark, but if happens, their
- // .toString method shouldn't be used because their return values are likely to contain
- // memory addresses or other nondeterministic information.
- this.append("<unknown object " + o.getClass().getName() + ">");
+ // TODO(bazel-team): change to a special representation for unknown objects
+ this.append(o.toString());
}
return this;
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkStringRepresentationsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkStringRepresentationsTest.java
index 8db33169eb..82e2dfed90 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkStringRepresentationsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkStringRepresentationsTest.java
@@ -389,17 +389,6 @@ public class SkylarkStringRepresentationsTest extends SkylarkTestCase {
}
@Test
- public void testStringRepresentationsOfUnknownObjects() throws Exception {
- update("mock", new Object());
-
- assertThat(eval("str(mock)")).isEqualTo("<unknown object java.lang.Object>");
- assertThat(eval("repr(mock)")).isEqualTo("<unknown object java.lang.Object>");
- assertThat(eval("'{}'.format(mock)")).isEqualTo("<unknown object java.lang.Object>");
- assertThat(eval("'%s' % mock")).isEqualTo("<unknown object java.lang.Object>");
- assertThat(eval("'%r' % mock")).isEqualTo("<unknown object java.lang.Object>");
- }
-
- @Test
public void testLegacyStringRepresentations_Labels() throws Exception {
setSkylarkSemanticsOptions("--incompatible_descriptive_string_representations=false");
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 77f627fd65..fe16f1b195 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
@@ -611,6 +611,15 @@ public class EvaluationTest extends EvaluationTestCase {
};
}
+ private Object createUnknownObj() {
+ return new Object() {
+ @Override
+ public String toString() {
+ return "<unknown object>";
+ }
+ };
+ }
+
@Test
public void testPercOnObject() throws Exception {
newTest("--incompatible_descriptive_string_representations=true")
@@ -620,8 +629,8 @@ public class EvaluationTest extends EvaluationTestCase {
.update("obj", createObjWithStr())
.testStatement("'%s' % obj", "<str legacy marker>");
newTest()
- .update("unknown", new Object())
- .testStatement("'%s' % unknown", "<unknown object java.lang.Object>");
+ .update("unknown", createUnknownObj())
+ .testStatement("'%s' % unknown", "<unknown object>");
}
@Test
@@ -633,10 +642,8 @@ public class EvaluationTest extends EvaluationTestCase {
.update("obj", createObjWithStr())
.testStatement("'%s %s' % (obj, obj)", "<str legacy marker> <str legacy marker>");
newTest()
- .update("unknown", new Object())
- .testStatement(
- "'%s %s' % (unknown, unknown)",
- "<unknown object java.lang.Object> <unknown object java.lang.Object>");
+ .update("unknown", createUnknownObj())
+ .testStatement("'%s %s' % (unknown, unknown)", "<unknown object> <unknown object>");
}
@Test