Skip to content

Commit 96665d3

Browse files
spkapustcopybara-github
authored andcommitted
- Update JsFileRegexParser to support Unicode characters in goog.require assignment targets, added associated unit test
- Address Java code clarity Yoda condition compiler warnings in JsFileRegexParser PiperOrigin-RevId: 839441109
1 parent 4b69af2 commit 96665d3

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

src/com/google/javascript/jscomp/deps/JsFileRegexParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public final class JsFileRegexParser extends JsFileLineParser {
4848
// TODO(sdh): this handles goog.loadModule(function(){"use strict";goog.module
4949
// but fails to match without "use strict"; since we look for semicolon, not open brace.
5050
Pattern.compile(
51-
"(?:^|;)(?:[a-zA-Z0-9$_,:{}\\s]+=)?\\s*"
51+
"(?:^|;)(?:[\\p{L}\\p{Nl}\\p{Nd}$_,:{}\\s]+=)?\\s*"
5252
+ "goog\\.(?<func>provide|module|require|requireType|addDependency|declareModuleId)"
5353
// TODO(johnplaisted): Remove declareNamespace.
5454
+ "\\s*\\(\\s*(?<args>.*?)\\s*\\)");

test/com/google/javascript/jscomp/deps/JsFileRegexParserTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,23 @@ public void testParseFileWithMultiLineRequires() {
176176
assertDeps(expected, result);
177177
}
178178

179+
@Test
180+
public void testUnicodeCharacters() {
181+
String contents =
182+
"""
183+
const FɵɵΔBar = goog.require('imaginary.test.namespace');
184+
""";
185+
186+
DependencyInfo expected =
187+
SimpleDependencyInfo.builder(CLOSURE_PATH, SRC_PATH)
188+
.setRequires(ImmutableList.of(googRequireSymbol("imaginary.test.namespace")))
189+
.build();
190+
191+
DependencyInfo result = parser.parseFile(SRC_PATH, CLOSURE_PATH, contents);
192+
193+
assertDeps(expected, result);
194+
}
195+
179196
@Test
180197
public void testParseGoogModuleWithRequireType() {
181198
String contents =

0 commit comments

Comments
 (0)