F diff --git a/src/frontend/parse/parse_declaration.c b/src/frontend/parse/parse_declaration.c --- a/src/frontend/parse/parse_declaration.c +++ b/src/frontend/parse/parse_declaration.chold_kw=kw_get(translation_data);switch(hold_kw){+ case KW_SIGNED:+ chomp(translation_data);+ if(ret->sign==TSIGN_NONE)+ {+ ret->sign=TSIGN_SIGNED;+ }+ else+ {+ push_translation_error("unexpected 'signed' in type",translation_data);+ if(ret->sign==TSIGN_SIGNED)+ push_translation_note("when it is unsigned",translation_data);+ else+ push_translation_note("when it is already signed",translation_data);+ }+ break;+ case KW_UNSIGNED:+ chomp(translation_data);+ if(ret->sign==TSIGN_NONE)+ {+ ret->sign=TSIGN_UNSIGNED;+ }+ else+ {+ push_translation_error("unexpected 'unsigned' in type",translation_data);+ if(ret->sign==TSIGN_SIGNED)+ push_translation_note("when it is signed",translation_data);+ else+ push_translation_note("when it is already unsigned",translation_data);+ }+ break;+case KW_CONST:chomp(translation_data);ret->is_const=1;F diff --git a/src/semantics/value/type.c b/src/semantics/value/type.c --- a/src/semantics/value/type.c +++ b/src/semantics/value/type.ccase KW_STRUCT:case KW_UNION:case KW_ENUM:+ case KW_SIGNED:+ case KW_UNSIGNED:return 1;default:return 0;