forked from OctaForge/libcubescript
better type list verification, don't print message on bad new_command
parent
6c0b6da94d
commit
bb4c34a3fb
|
@ -1245,25 +1245,30 @@ CsCommand *CsState::new_command(
|
||||||
case 'r':
|
case 'r':
|
||||||
case '$':
|
case '$':
|
||||||
if (nargs < MaxArguments) {
|
if (nargs < MaxArguments) {
|
||||||
nargs++;
|
++nargs;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case '1':
|
case '1':
|
||||||
case '2':
|
case '2':
|
||||||
case '3':
|
case '3':
|
||||||
case '4':
|
case '4':
|
||||||
|
if (nargs < (*fmt - '0')) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
if ((fmt.size() != 2) || ((fmt[1] != 'C') && (fmt[1] != 'V'))) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
if (nargs < MaxArguments) {
|
if (nargs < MaxArguments) {
|
||||||
fmt.push_front_n(*fmt - '0' + 1);
|
fmt.push_front_n(*fmt - '0' + 1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'C':
|
case 'C':
|
||||||
case 'V':
|
case 'V':
|
||||||
|
if (fmt.size() != 1) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
get_err().writefln(
|
|
||||||
"builtin %s declared with illegal type: %c",
|
|
||||||
name, fmt.front()
|
|
||||||
);
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue