@@ -178,6 +178,8 @@ counted_array!(pub static ARGS: [ArgInfo<ArgData>; _] = [
178178 flag!( "--coverage" , Coverage ) ,
179179 take_arg!( "--param" , OsString , Separated , PassThrough ) ,
180180 flag!( "--save-temps" , TooHardFlag ) ,
181+ flag!( "--save-temps=cwd" , TooHardFlag ) ,
182+ flag!( "--save-temps=obj" , TooHardFlag ) ,
181183 take_arg!( "--serialize-diagnostics" , PathBuf , Separated , SerializeDiagnostics ) ,
182184 take_arg!( "--sysroot" , PathBuf , Separated , PassThroughPath ) ,
183185 take_arg!( "-A" , OsString , Separated , PassThrough ) ,
@@ -244,6 +246,8 @@ counted_array!(pub static ARGS: [ArgInfo<ArgData>; _] = [
244246 flag!( "-pedantic-errors" , PedanticFlag ) ,
245247 flag!( "-remap" , PreprocessorArgumentFlag ) ,
246248 flag!( "-save-temps" , TooHardFlag ) ,
249+ flag!( "-save-temps=cwd" , TooHardFlag ) ,
250+ flag!( "-save-temps=obj" , TooHardFlag ) ,
247251 take_arg!( "-std" , OsString , Concatenated ( b'=' ) , Standard ) ,
248252 take_arg!( "-stdlib" , OsString , Concatenated ( b'=' ) , PreprocessorArgument ) ,
249253 flag!( "-trigraphs" , PreprocessorArgumentFlag ) ,
@@ -1536,6 +1540,31 @@ mod test {
15361540 ) ;
15371541 }
15381542
1543+ #[ test]
1544+ fn test_parse_arguments_too_hard ( ) {
1545+ let too_hard_flags = stringvec ! [
1546+ "-save-temps" ,
1547+ "-save-temps=cwd" ,
1548+ "-save-temps=obj" ,
1549+ "--save-temps" ,
1550+ "--save-temps=cwd" ,
1551+ "--save-temps=obj"
1552+ ] ;
1553+
1554+ for flag in too_hard_flags {
1555+ let args = stringvec ! [ "-c" , "foo.c" , "-o" , "foo.o" , flag] ;
1556+
1557+ match parse_arguments_ ( args, false ) {
1558+ CompilerArguments :: CannotCache ( reason, None ) => {
1559+ assert_eq ! ( reason, & flag) ;
1560+ }
1561+ o => {
1562+ panic ! ( "Got unexpected parse result: {:?} for flag: {:?}" , o, flag) ;
1563+ }
1564+ }
1565+ }
1566+ }
1567+
15391568 #[ test]
15401569 fn test_parse_arguments_explicit_dep_target ( ) {
15411570 let args = stringvec ! [
0 commit comments