Add specific empty function name compiler error
This commit adds checks to rjeect functions with empty or whitespace names. The compiler throws a specific errror when it encounters a function data object lacking a proper name. This provides early detection and clear feedback on invalid function definitions, helping in faster debugging and ensuring script integrity in the compilation process. The enhancement aims to provide early detection and clear feedback on invalid function definitions, aiding in faster debugging and ensuring script integrity in the compilation process. when it encounters a function data object lacking a proper name. It covers scenarios where the function name might be an empty string, undefined, or solely consist of whitespace.
This commit is contained in:
@@ -98,6 +98,7 @@ function hasCall(data: FunctionData): data is CallFunctionData {
|
||||
}
|
||||
|
||||
function ensureValidFunctions(functions: readonly FunctionData[]) {
|
||||
ensureNoUnnamedFunctions(functions);
|
||||
ensureNoDuplicatesInFunctionNames(functions);
|
||||
ensureEitherCallOrCodeIsDefined(functions);
|
||||
ensureNoDuplicateCode(functions);
|
||||
@@ -108,6 +109,16 @@ function printList(list: readonly string[]): string {
|
||||
return `"${list.join('","')}"`;
|
||||
}
|
||||
|
||||
function ensureNoUnnamedFunctions(functions: readonly FunctionData[]) {
|
||||
const functionsWithoutNames = functions.filter(
|
||||
(func) => !func.name || func.name.trim().length === 0,
|
||||
);
|
||||
if (functionsWithoutNames.length) {
|
||||
const invalidFunctions = functionsWithoutNames.map((f) => JSON.stringify(f));
|
||||
throw new Error(`Some function(s) have no names:\n${invalidFunctions.join('\n')}`);
|
||||
}
|
||||
}
|
||||
|
||||
function ensureEitherCallOrCodeIsDefined(holders: readonly FunctionData[]) {
|
||||
// Ensure functions do not define both call and code
|
||||
const withBothCallAndCode = holders.filter((holder) => hasCode(holder) && hasCall(holder));
|
||||
|
||||
Reference in New Issue
Block a user