Index: runtime/vm/dart_api_impl_test.cc |
=================================================================== |
--- runtime/vm/dart_api_impl_test.cc (revision 25321) |
+++ runtime/vm/dart_api_impl_test.cc (working copy) |
@@ -8213,4 +8213,57 @@ |
EXPECT_EQ(8, value); |
} |
+ |
+TEST_CASE(AmbiguousReference) { |
+ const char* kImportedScript1Chars = |
+ "library library1.dart;\n" |
+ "var foo;\n" |
+ "var foo1;\n" |
+ "bar() => 'library1.dart bar()';\n" |
+ "bar1() => 'library1.dart bar1()';\n" |
+ "baz() => 'library1.dart baz()';\n" |
+ "var bay;\n" |
+ "typedef int bax(int a, int b);\n" |
+ "class baw {}\n"; |
+ const char* kImportedScript2Chars = |
+ "library library2.dart;\n" |
+ "var foo;\n" |
+ "var foo2;\n" |
+ "bar() => 'library2.dart bar()';\n" |
+ "bar2() => 'library2.dart bar2()';\n" |
+ "var baz;\n" |
+ "bay() => 'library2.dart bay()';\n" |
+ "typedef double bax(int a, int b);\n" |
+ "var baw;\n"; |
+ const char* kScriptChars = |
+ "import 'library1.dart';\n" |
+ "import 'library2.dart';\n"; |
+ |
+ // Load imported libs. |
+ Dart_Handle url1 = NewString("library1.dart"); |
+ Dart_Handle source1 = NewString(kImportedScript1Chars); |
+ Dart_Handle imported_lib1 = Dart_LoadLibrary(url1, source1); |
+ EXPECT_VALID(imported_lib1); |
+ Dart_Handle url2 = NewString("library2.dart"); |
+ Dart_Handle source2 = NewString(kImportedScript2Chars); |
+ Dart_Handle imported_lib2 = Dart_LoadLibrary(url2, source2); |
+ EXPECT_VALID(imported_lib2); |
+ // Load main script. |
+ Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
+ EXPECT_VALID(lib); |
+ // Expect an error for ambiguous references. |
+ EXPECT(Dart_IsError(Dart_LookupVariable(lib, NewString("foo")))); |
+ EXPECT(Dart_IsError(Dart_LookupFunction(lib, NewString("bar")))); |
+ EXPECT(Dart_IsError(Dart_LookupFunction(lib, NewString("baz")))); |
+ EXPECT(Dart_IsError(Dart_LookupVariable(lib, NewString("bay")))); |
+ EXPECT(Dart_IsError(Dart_GetClass(lib, NewString("bax")))); |
+ EXPECT(Dart_IsError(Dart_GetClass(lib, NewString("baw")))); |
+ // Variables foo1 and foo2 are unambiguous. |
+ EXPECT(!Dart_IsError(Dart_LookupVariable(lib, NewString("foo1")))); |
+ EXPECT(!Dart_IsError(Dart_LookupVariable(lib, NewString("foo2")))); |
+ // Functions bar1 and bar2 are unambiguous. |
+ EXPECT(!Dart_IsError(Dart_LookupFunction(lib, NewString("bar1")))); |
+ EXPECT(!Dart_IsError(Dart_LookupFunction(lib, NewString("bar2")))); |
+} |
+ |
} // namespace dart |