Skip to content

Commit 97de7b5

Browse files
committed
Exposed flags to the regex parser
1 parent 2f2c9f8 commit 97de7b5

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -600,7 +600,7 @@ public Label visit(Literal nd, Context c) {
600600
SourceMap sourceMap =
601601
SourceMap.legacyWithStartPos(
602602
SourceMap.fromString(nd.getRaw()).offsetBy(0, offsets), startPos);
603-
regexpExtractor.extract(source.substring(1, source.lastIndexOf('/')), sourceMap, nd, false);
603+
regexpExtractor.extract(source.substring(1, source.lastIndexOf('/')), sourceMap, nd, false, source.substring(source.lastIndexOf('/'), source.length()));
604604
} else if (nd.isStringLiteral()
605605
&& !c.isInsideType()
606606
&& nd.getRaw().length() < 1000

javascript/extractor/src/com/semmle/js/extractor/RegExpExtractor.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,7 @@ public void visit(CharacterClassRange nd) {
346346
}
347347
}
348348

349-
public void extract(String src, SourceMap sourceMap, Node parent, boolean isSpeculativeParsing) {
349+
public void extract(String src, SourceMap sourceMap, Node parent, boolean isSpeculativeParsing, String flags) {
350350
Result res = parser.parse(src);
351351
if (isSpeculativeParsing && res.getErrors().size() > 0) {
352352
return;
@@ -364,4 +364,8 @@ public void extract(String src, SourceMap sourceMap, Node parent, boolean isSpec
364364
this.emitLocation(err, lbl);
365365
}
366366
}
367+
368+
public void extract(String src, SourceMap sourceMap, Node parent, boolean isSpeculativeParsing) {
369+
extract(src, sourceMap, parent, isSpeculativeParsing, "");
370+
}
367371
}

javascript/extractor/src/com/semmle/js/parser/RegExpParser.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ public List<Error> getErrors() {
6767
private List<Error> errors;
6868
private List<BackReference> backrefs;
6969
private int maxbackref;
70+
private String flags;
7071

7172
/** Parse the given string as a regular expression. */
7273
public Result parse(String src) {
@@ -82,6 +83,11 @@ public Result parse(String src) {
8283
return new Result(root, errors);
8384
}
8485

86+
public Result parse(String src, String flags) {
87+
this.flags = flags;
88+
return parse(src);
89+
}
90+
8591
private static String fromCodePoint(int codepoint) {
8692
if (Character.isValidCodePoint(codepoint)) return new String(Character.toChars(codepoint));
8793
// replacement character

0 commit comments

Comments
 (0)