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); | ||||
|   if (name) | ||||
|     return "unknown"; | ||||
|     return name; | ||||
| 
 | ||||
|   if (tag & FUNCTAG) | ||||
|     return "function"; | ||||
| @ -1698,6 +1698,10 @@ static int hier2(value *lval) | ||||
|   } | ||||
|   case tLABEL:                  /* tagname override */ | ||||
|     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; | ||||
|     lvalue=hier2(lval); | ||||
|     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", | ||||
| /*238*/  "'%s:' is an illegal cast; use view_as<%s>(expression)\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 | ||||
|   "\327 \275tr\242\231\227\266 %\204\305\206a\306\210\260", | ||||
|   "\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