@@ -693,7 +693,7 @@ fn expand_variables_cmake(
693
693
}
694
694
695
695
const key = contents [curr + 1 .. close_pos ];
696
- const value = values .get (key ) orelse return error . MissingValue ;
696
+ const value = values .get (key ) orelse .undef ;
697
697
const missing = contents [source_offset .. curr ];
698
698
try result .appendSlice (missing );
699
699
switch (value ) {
@@ -748,10 +748,7 @@ fn expand_variables_cmake(
748
748
749
749
const key_start = open_pos .target + open_var .len ;
750
750
const key = result .items [key_start .. ];
751
- if (key .len == 0 ) {
752
- return error .MissingKey ;
753
- }
754
- const value = values .get (key ) orelse return error .MissingValue ;
751
+ const value = values .get (key ) orelse .undef ;
755
752
result .shrinkRetainingCapacity (result .items .len - key .len - open_var .len );
756
753
switch (value ) {
757
754
.undef , .defined = > {},
@@ -952,8 +949,8 @@ test "expand_variables_cmake simple cases" {
952
949
// line with misc content is preserved
953
950
try testReplaceVariablesCMake (allocator , "no substitution" , "no substitution" , values );
954
951
955
- // empty ${} wrapper leads to an error
956
- try std . testing . expectError ( error . MissingKey , testReplaceVariablesCMake (allocator , "${}" , "" , values ) );
952
+ // empty ${} wrapper is removed
953
+ try testReplaceVariablesCMake (allocator , "${}" , "" , values );
957
954
958
955
// empty @ sigils are preserved
959
956
try testReplaceVariablesCMake (allocator , "@" , "@" , values );
@@ -1019,6 +1016,9 @@ test "expand_variables_cmake simple cases" {
1019
1016
// unknown key leads to an error
1020
1017
try std .testing .expectError (error .MissingValue , testReplaceVariablesCMake (allocator , "@bad@" , "" , values ));
1021
1018
try std .testing .expectError (error .MissingValue , testReplaceVariablesCMake (allocator , "${bad}" , "" , values ));
1019
+ // unknown key is removed
1020
+ try testReplaceVariablesCMake (allocator , "@bad@" , "" , values );
1021
+ try testReplaceVariablesCMake (allocator , "${bad}" , "" , values );
1022
1022
}
1023
1023
1024
1024
test "expand_variables_cmake edge cases" {
@@ -1099,5 +1099,5 @@ test "expand_variables_cmake escaped characters" {
1099
1099
try testReplaceVariablesCMake (allocator , "$\\ {string}" , "$\\ {string}" , values );
1100
1100
1101
1101
// backslash is skipped when checking for invalid characters, yet it mangles the key
1102
- try std . testing . expectError ( error . MissingValue , testReplaceVariablesCMake (allocator , "${string\\ }" , "" , values ) );
1102
+ try testReplaceVariablesCMake (allocator , "${string\\ }" , "" , values );
1103
1103
}
0 commit comments