diff --git a/src/main/java/com/google/devtools/common/options/OptionsParser.java b/src/main/java/com/google/devtools/common/options/OptionsParser.java index 0c0d2ab8dc858c..61486ae23171d7 100644 --- a/src/main/java/com/google/devtools/common/options/OptionsParser.java +++ b/src/main/java/com/google/devtools/common/options/OptionsParser.java @@ -758,10 +758,8 @@ public ImmutableList parseArgsAsExpansionOfOption( private void addResidueFromResult(OptionsParserImplResult result) throws OptionsParsingException { residue.addAll(result.getResidue()); postDoubleDashResidue.addAll(result.postDoubleDashResidue); - if (!allowResidue && (!getSkippedArgs().isEmpty() || !residue.isEmpty())) { - String errorMsg = - "Unrecognized arguments: " - + Joiner.on(' ').join(Iterables.concat(getSkippedArgs(), residue)); + if (!allowResidue && !residue.isEmpty()) { + String errorMsg = "Unrecognized arguments: " + Joiner.on(' ').join(residue); throw new OptionsParsingException(errorMsg); } } diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java index 5382931a0a7f45..e85cef48b36ee8 100644 --- a/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java +++ b/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java @@ -437,24 +437,6 @@ public void testParseOptions_residue() { assertThat(optionHandler.getRcfileNotes()).isEmpty(); } - @Test - public void testParseOptions_disallowResidue_skippedArgsLeadToFailure() throws Exception { - ImmutableList> optionsClasses = - ImmutableList.of(TestOptions.class, CommonCommandOptions.class, ClientOptions.class); - - BlazeOptionHandlerTestHelper helper = - new BlazeOptionHandlerTestHelper( - optionsClasses, - /* allowResidue= */ false, - /* aliasFlag= */ null, - /* skipStarlarkPrefixes= */ true); - OptionsParser parser = helper.getOptionsParser(); - - OptionsParsingException e = - assertThrows(OptionsParsingException.class, () -> parser.parse("--//f=1")); - assertThat(e).hasMessageThat().isEqualTo("Unrecognized arguments: --//f=1"); - } - @Test public void testParseOptions_explicitOption() { optionHandler.parseOptions( diff --git a/src/test/py/bazel/options_test.py b/src/test/py/bazel/options_test.py index 932931ec39c4ca..9406db1dafe16f 100644 --- a/src/test/py/bazel/options_test.py +++ b/src/test/py/bazel/options_test.py @@ -269,6 +269,20 @@ def testCommonPseudoCommand_unsupportedOptionValue(self): stderr, ) + def testCommonPseudoCommand_allowResidueFalseCommandIgnoresStarlarkOptions( + self, + ): + self.ScratchFile("WORKSPACE.bazel") + self.ScratchFile( + ".bazelrc", + [ + "common --@foo//bar:flag", + ], + ) + + # Check that version doesn't fail. + self.RunBazel(["version"]) + if __name__ == "__main__": unittest.main()