@@ -39,6 +39,7 @@ public ProcessClosureProvidesAndRequiresTest() {
39
39
}
40
40
41
41
private boolean preserveGoogProvidesAndRequires ;
42
+ private ProcessClosureProvidesAndRequires lastProcessor ;
42
43
43
44
private ProcessClosureProvidesAndRequires createClosureProcessor (Compiler compiler ) {
44
45
return new ProcessClosureProvidesAndRequires (compiler , preserveGoogProvidesAndRequires );
@@ -53,14 +54,15 @@ public void setUp() throws Exception {
53
54
enableTypeCheck ();
54
55
enableCreateModuleMap (); // necessary for the typechecker
55
56
replaceTypesWithColors ();
57
+ lastProcessor = null ;
56
58
}
57
59
58
60
@ Override
59
61
protected CompilerPass getProcessor (Compiler compiler ) {
60
62
return (Node externs , Node root ) -> {
61
63
verifyCollectProvidedNamesDoesntChangeAst (externs , root , compiler );
62
- ProcessClosureProvidesAndRequires processor = createClosureProcessor (compiler );
63
- processor .rewriteProvidesAndRequires (externs , root );
64
+ lastProcessor = createClosureProcessor (compiler );
65
+ lastProcessor .rewriteProvidesAndRequires (externs , root );
64
66
};
65
67
}
66
68
@@ -938,6 +940,20 @@ public void testEsModule_ignored() {
938
940
assertThat (providedNameMap .keySet ()).containsExactly ("goog" );
939
941
}
940
942
943
+ @ Test
944
+ public void testGoogExportSymbolRecording () {
945
+ testSame (
946
+ """
947
+ goog.exportSymbol('a', 0);
948
+ goog.exportSymbol('foo.bar.baz', 1);
949
+ goog.exportSymbol(notAStringLiteral, 2);
950
+ function f() {
951
+ goog.exportSymbol('b', 3);
952
+ }
953
+ """ );
954
+ assertThat (lastProcessor .getExportedVariableNames ()).containsExactly ("a" , "foo" , "b" );
955
+ }
956
+
941
957
private Map <String , ProvidedName > getProvidedNameCollection (String js ) {
942
958
Compiler compiler = createCompiler ();
943
959
ProcessClosureProvidesAndRequires processor = createClosureProcessor (compiler );
0 commit comments