in presence of invalid source code we can't rely on the next token to determine if we have or haven't already parsed an initializer element, we really have to track it in some separate state; it's a flag, so merge it with the other two we have (size_only and first). Also add some syntax checks for situations which formerly lead to vstack leaks, see the added testcases.
73 lines
2.8 KiB
Text
73 lines
2.8 KiB
Text
[test_56_btype_excess_1]
|
|
60_errors_and_warnings.c:2: error: too many basic types
|
|
|
|
[test_57_btype_excess_2]
|
|
60_errors_and_warnings.c:5: error: too many basic types
|
|
|
|
[test_58_function_redefinition]
|
|
60_errors_and_warnings.c:9: error: redefinition of 'f'
|
|
|
|
[test_global_redefinition]
|
|
60_errors_and_warnings.c:14: error: redefinition of 'xxx'
|
|
|
|
[test_59_function_array]
|
|
60_errors_and_warnings.c:17: error: declaration of an array of functions
|
|
|
|
[test_60_enum_redefinition]
|
|
60_errors_and_warnings.c:21: error: struct/union/enum already defined
|
|
|
|
[test_62_enumerator_redefinition]
|
|
60_errors_and_warnings.c:26: error: redefinition of enumerator 'RED'
|
|
|
|
[test_63_local_enumerator_redefinition]
|
|
|
|
[test_61_undefined_enum]
|
|
60_errors_and_warnings.c:46: error: unknown type size
|
|
|
|
[test_74_non_const_init]
|
|
60_errors_and_warnings.c:49: error: initializer element is not constant
|
|
|
|
[test_pointer_assignment]
|
|
60_errors_and_warnings.c:79: warning: assignment from incompatible pointer type
|
|
60_errors_and_warnings.c:82: warning: assignment from incompatible pointer type
|
|
60_errors_and_warnings.c:86: warning: assignment from incompatible pointer type
|
|
60_errors_and_warnings.c:88: warning: assignment from incompatible pointer type
|
|
60_errors_and_warnings.c:91: warning: assignment from incompatible pointer type
|
|
60_errors_and_warnings.c:92: warning: assignment from incompatible pointer type
|
|
60_errors_and_warnings.c:94: warning: assignment from incompatible pointer type
|
|
60_errors_and_warnings.c:95: warning: assignment from incompatible pointer type
|
|
60_errors_and_warnings.c:98: warning: assignment discards qualifiers from pointer target type
|
|
60_errors_and_warnings.c:99: warning: assignment discards qualifiers from pointer target type
|
|
60_errors_and_warnings.c:103: warning: assignment discards qualifiers from pointer target type
|
|
60_errors_and_warnings.c:104: warning: assignment discards qualifiers from pointer target type
|
|
60_errors_and_warnings.c:109: warning: assignment of read-only location
|
|
|
|
[test_enum_compat]
|
|
60_errors_and_warnings.c:119: error: incompatible types for redefinition of 'f3'
|
|
|
|
[test_ptr_to_str]
|
|
60_errors_and_warnings.c:122: error: type 'const int **' does not match any association
|
|
|
|
[test_fnptr_to_str]
|
|
60_errors_and_warnings.c:124: error: type 'int (*(*)(float, char))(double, int)' does not match any association
|
|
|
|
[test_array_to_str]
|
|
60_errors_and_warnings.c:126: error: type 'int (*)[3]' does not match any association
|
|
|
|
[test_duplicate_def_1]
|
|
60_errors_and_warnings.c:128: error: redefinition of 'L'
|
|
|
|
[test_duplicate_def_2]
|
|
60_errors_and_warnings.c:131: error: redeclaration of 'L'
|
|
|
|
[test_abstract_decls]
|
|
60_errors_and_warnings.c:141: error: identifier expected
|
|
|
|
[test_invalid_1]
|
|
60_errors_and_warnings.c:146: error: identifier expected
|
|
|
|
[test_invalid_2]
|
|
60_errors_and_warnings.c:149: error: ';' expected (got "{")
|
|
|
|
[test_invalid_3]
|
|
60_errors_and_warnings.c:153: error: ',' expected (got "a")
|