Old style retagging should emit a compiler warning when newdecls are required.
This commit is contained in:
parent
58194c5d99
commit
154d84668b
@ -334,7 +334,7 @@ const char *type_to_name(int tag)
|
|||||||
|
|
||||||
const char *name = pc_tagname(tag);
|
const char *name = pc_tagname(tag);
|
||||||
if (name)
|
if (name)
|
||||||
return "unknown";
|
return name;
|
||||||
|
|
||||||
if (tag & FUNCTAG)
|
if (tag & FUNCTAG)
|
||||||
return "function";
|
return "function";
|
||||||
@ -1698,6 +1698,10 @@ static int hier2(value *lval)
|
|||||||
}
|
}
|
||||||
case tLABEL: /* tagname override */
|
case tLABEL: /* tagname override */
|
||||||
tag=pc_addtag(st);
|
tag=pc_addtag(st);
|
||||||
|
if (sc_require_newdecls) {
|
||||||
|
// Warn: old style cast used when newdecls pragma is enabled
|
||||||
|
error(240, st, type_to_name(tag));
|
||||||
|
}
|
||||||
lval->cmptag=tag;
|
lval->cmptag=tag;
|
||||||
lvalue=hier2(lval);
|
lvalue=hier2(lval);
|
||||||
if ((lval->tag & OBJECTTAG) || (tag & OBJECTTAG)) {
|
if ((lval->tag & OBJECTTAG) || (tag & OBJECTTAG)) {
|
||||||
|
@ -462,6 +462,7 @@ static const char *warnmsg[] = {
|
|||||||
/*237*/ "coercing functions to and from primitives is unsupported and will be removed in the future\n",
|
/*237*/ "coercing functions to and from primitives is unsupported and will be removed in the future\n",
|
||||||
/*238*/ "'%s:' is an illegal cast; use view_as<%s>(expression)\n",
|
/*238*/ "'%s:' is an illegal cast; use view_as<%s>(expression)\n",
|
||||||
/*239*/ "'%s' is an illegal tag; use %s as a type\n",
|
/*239*/ "'%s' is an illegal tag; use %s as a type\n",
|
||||||
|
/*240*/ "'%s:' is an old-style tag operation; use view_as<%s>(expression) instead\n",
|
||||||
#else
|
#else
|
||||||
"\327 \275tr\242\231\227\266 %\204\305\206a\306\210\260",
|
"\327 \275tr\242\231\227\266 %\204\305\206a\306\210\260",
|
||||||
"\214\343i\215 \330\371\213t/\321cro \365",
|
"\214\343i\215 \330\371\213t/\321cro \365",
|
||||||
|
18
sourcepawn/compiler/tests/warn-oldstyle-cast.sp
Normal file
18
sourcepawn/compiler/tests/warn-oldstyle-cast.sp
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
|
||||||
|
#pragma newdecls required
|
||||||
|
|
||||||
|
enum MyType:{};
|
||||||
|
|
||||||
|
native void Print(MyType value);
|
||||||
|
native void PrintF(float value);
|
||||||
|
|
||||||
|
public void main()
|
||||||
|
{
|
||||||
|
int val = 2;
|
||||||
|
MyType otherVal = MyType:val;
|
||||||
|
|
||||||
|
float value2 = Float:val;
|
||||||
|
|
||||||
|
Print(otherVal);
|
||||||
|
PrintF(value2);
|
||||||
|
}
|
2
sourcepawn/compiler/tests/warn-oldstyle-cast.txt
Normal file
2
sourcepawn/compiler/tests/warn-oldstyle-cast.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
(12) : warning 240: 'MyType:' is an old-style tag operation; use view_as<MyType>(expression) instead
|
||||||
|
(14) : warning 240: 'Float:' is an old-style tag operation; use view_as<float>(expression) instead
|
Loading…
Reference in New Issue
Block a user