diff --git a/src/com/google/javascript/jscomp/CommandLineRunner.java b/src/com/google/javascript/jscomp/CommandLineRunner.java index 3bf5e1c7aee..a30875aafcd 100644 --- a/src/com/google/javascript/jscomp/CommandLineRunner.java +++ b/src/com/google/javascript/jscomp/CommandLineRunner.java @@ -1340,8 +1340,16 @@ private MultiFlagSetter( } @Override public void addValue(String value) throws CmdLineException { - proxy.addValue(value); - entries.add(new FlagEntry<>(flag, value)); + // On windows, some quoted values seem to preserve the quotes as part of the value. + String normalizedValue = value; + if (value != null + && value.length() > 0 + && (value.substring(0, 1).equals("'") || value.substring(0, 1).equals("\"")) + && value.substring(value.length() - 1).equals(value.substring(0, 1))) { + normalizedValue = value.substring(1, value.length() - 1); + } + proxy.addValue(normalizedValue); + entries.add(new FlagEntry<>(flag, normalizedValue)); } @Override public FieldSetter asFieldSetter() { diff --git a/test/com/google/javascript/jscomp/CommandLineRunnerTest.java b/test/com/google/javascript/jscomp/CommandLineRunnerTest.java index 840ea5019e2..da85f097fc3 100644 --- a/test/com/google/javascript/jscomp/CommandLineRunnerTest.java +++ b/test/com/google/javascript/jscomp/CommandLineRunnerTest.java @@ -2431,6 +2431,14 @@ public void testEscapeDollarInTemplateLiteralEs5Output() { "var Foo, x = '\\${Foo}'+Foo;"); } + /** windows shells can add extra quotes to an argument */ + @Test + public void testWarningGuardQuotedValue() { + args.add("--jscomp_error='\"*\"'"); + args.add("--jscomp_warning=\"'*'\""); + args.add("--jscomp_off='\"*\"'"); + testSame("alert('hello world')"); + } /* Helper functions */