Fix type parsing bug with eg: ("")
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5291 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
a7b696ef8c
commit
df8bd3ad8c
3 changed files with 30 additions and 2 deletions
|
@ -757,6 +757,7 @@ enum {
|
||||||
WARN_PRECOMPILERMESSAGE,
|
WARN_PRECOMPILERMESSAGE,
|
||||||
WARN_TOOMANYPARAMETERSFORFUNC,
|
WARN_TOOMANYPARAMETERSFORFUNC,
|
||||||
WARN_TOOMANYPARAMETERSVARARGS,
|
WARN_TOOMANYPARAMETERSVARARGS,
|
||||||
|
WARN_NESTEDCOMMENT,
|
||||||
WARN_STRINGTOOLONG,
|
WARN_STRINGTOOLONG,
|
||||||
WARN_BADTARGET,
|
WARN_BADTARGET,
|
||||||
WARN_BADPRAGMA,
|
WARN_BADPRAGMA,
|
||||||
|
|
|
@ -2417,6 +2417,8 @@ void QCC_PR_LexWhitespace (pbool inhibitpreprocessor)
|
||||||
pr_file_p++;
|
pr_file_p++;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (pr_file_p[0] == '/' && pr_file_p[1] == '*')
|
||||||
|
QCC_PR_ParseWarning(WARN_NESTEDCOMMENT, "\"/*\" inside comment");
|
||||||
} while (pr_file_p[0] != '*' || pr_file_p[1] != '/');
|
} while (pr_file_p[0] != '*' || pr_file_p[1] != '/');
|
||||||
pr_file_p+=2;
|
pr_file_p+=2;
|
||||||
continue;
|
continue;
|
||||||
|
@ -4148,6 +4150,8 @@ pbool QCC_PR_CheckTokenComment(const char *string, char **comment)
|
||||||
QCC_PR_ParseError(0, "EOF inside comment\n");
|
QCC_PR_ParseError(0, "EOF inside comment\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (pr_file_p[0] == '/' && pr_file_p[1] == '*')
|
||||||
|
QCC_PR_ParseWarning(WARN_NESTEDCOMMENT, "\"/*\" inside comment");
|
||||||
} while (pr_file_p[0] != '*' || pr_file_p[1] != '/');
|
} while (pr_file_p[0] != '*' || pr_file_p[1] != '/');
|
||||||
|
|
||||||
if (pr_file_p[1] == 0)
|
if (pr_file_p[1] == 0)
|
||||||
|
@ -5065,7 +5069,14 @@ QCC_type_t *QCC_PR_ParseType (int newtype, pbool silentfail)
|
||||||
return QCC_PR_FindType (newt);
|
return QCC_PR_FindType (newt);
|
||||||
}
|
}
|
||||||
|
|
||||||
name = QCC_PR_CheckCompConstString(pr_token);
|
name = pr_token;
|
||||||
|
if (pr_token_type != tt_name)
|
||||||
|
{
|
||||||
|
if (silentfail)
|
||||||
|
return NULL;
|
||||||
|
QCC_PR_ParseError (ERR_NOTATYPE, "\"%s\" is not a type", name);
|
||||||
|
}
|
||||||
|
// name = QCC_PR_CheckCompConstString(name);
|
||||||
|
|
||||||
//accessors
|
//accessors
|
||||||
if (QCC_PR_CheckKeyword (keyword_class, "accessor"))
|
if (QCC_PR_CheckKeyword (keyword_class, "accessor"))
|
||||||
|
|
|
@ -218,6 +218,7 @@ struct {
|
||||||
{" F322", WARN_IFSTRING_USED},
|
{" F322", WARN_IFSTRING_USED},
|
||||||
{" F323", WARN_UNREACHABLECODE},
|
{" F323", WARN_UNREACHABLECODE},
|
||||||
{" F324", WARN_FORMATSTRING},
|
{" F324", WARN_FORMATSTRING},
|
||||||
|
{" F325", WARN_NESTEDCOMMENT},
|
||||||
|
|
||||||
{" F207", WARN_NOTREFERENCEDFIELD},
|
{" F207", WARN_NOTREFERENCEDFIELD},
|
||||||
{" F208", WARN_NOTREFERENCEDCONST},
|
{" F208", WARN_NOTREFERENCEDCONST},
|
||||||
|
@ -4157,7 +4158,7 @@ void QCC_PR_CommandLinePrecompilerOptions (void)
|
||||||
keyword_state = true;
|
keyword_state = true;
|
||||||
else if (!strcmp(myargv[i]+5, "fteqcc"))
|
else if (!strcmp(myargv[i]+5, "fteqcc"))
|
||||||
; //as above, its the default.
|
; //as above, its the default.
|
||||||
else if (!strcmp(myargv[i]+5, "id"))
|
else if (!strcmp(myargv[i]+5, "qcc") || !strcmp(myargv[i]+5, "id"))
|
||||||
{
|
{
|
||||||
flag_ifvector = flag_vectorlogic = false;
|
flag_ifvector = flag_vectorlogic = false;
|
||||||
|
|
||||||
|
@ -4170,6 +4171,21 @@ void QCC_PR_CommandLinePrecompilerOptions (void)
|
||||||
keyword_thinktime = keyword_until = keyword_loop = false;
|
keyword_thinktime = keyword_until = keyword_loop = false;
|
||||||
keyword_wrap = keyword_weak = false;
|
keyword_wrap = keyword_weak = false;
|
||||||
}
|
}
|
||||||
|
else if (!strcmp(myargv[i]+5, "hcc") || !strcmp(myargv[i]+5, "hexenc"))
|
||||||
|
{
|
||||||
|
flag_ifvector = flag_vectorlogic = false;
|
||||||
|
|
||||||
|
keyword_asm = keyword_continue = keyword_for = keyword_goto = false;
|
||||||
|
keyword_const = keyword_var = keyword_inout = keyword_optional = keyword_state = keyword_inline = keyword_nosave = keyword_extern = keyword_shared = keyword_noref = keyword_unused = keyword_used = keyword_static = keyword_nonstatic = keyword_ignore = keyword_strip = false;
|
||||||
|
keyword_class = keyword_const = false;
|
||||||
|
|
||||||
|
keyword_vector = keyword_entity = keyword_float = keyword_string = false; //not to be confused with actual types, but rather the absence of the keyword local.
|
||||||
|
keyword_int = keyword_integer = keyword_typedef = keyword_struct = keyword_union = keyword_enum = keyword_enumflags = false;
|
||||||
|
keyword_wrap = keyword_weak = false;
|
||||||
|
|
||||||
|
keyword_thinktime = keyword_until = keyword_loop = true;
|
||||||
|
keyword_switch = keyword_case = keyword_default = keyword_break = true;
|
||||||
|
}
|
||||||
else if (!strcmp(myargv[i]+5, "gmqcc"))
|
else if (!strcmp(myargv[i]+5, "gmqcc"))
|
||||||
{
|
{
|
||||||
flag_ifvector = flag_vectorlogic = true;
|
flag_ifvector = flag_vectorlogic = true;
|
||||||
|
|
Loading…
Reference in a new issue