From 51f2fdaefa319353c5275a73e8767af87e8b3be0 Mon Sep 17 00:00:00 2001 From: Emil Atanasov Date: Tue, 12 May 2026 10:57:14 +0300 Subject: [PATCH 1/5] add UE 5.7 build fix documentation Documents two issues found when building the plugin against UE 5.7: 1. AdditionalCompilerArguments is invalid in UE 5.7 BuildConfiguration.xml; use PCHMemoryAllocationFactor instead to pass /Zm to cl.exe. 2. The XGE executor ignores MaxParallelActions, causing burst-parallel PCH allocations that exhaust virtual memory commit (error 1455 / C1076). Fix: set bAllowXGE=false and MaxParallelActions=4 in BuildConfiguration.xml. --- doc/unreal/en/ue57_build_fixes.md | 129 ++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 doc/unreal/en/ue57_build_fixes.md diff --git a/doc/unreal/en/ue57_build_fixes.md b/doc/unreal/en/ue57_build_fixes.md new file mode 100644 index 0000000000..ba085b3440 --- /dev/null +++ b/doc/unreal/en/ue57_build_fixes.md @@ -0,0 +1,129 @@ +# UE 5.7 Plugin Build Fixes + +This document records the issues encountered when building the Puerts plugin against +Unreal Engine 5.7 with `RunUAT BuildPlugin` and the configuration changes that resolved them. + +--- + +## Problem 1 — `AdditionalCompilerArguments` silently ignored in UE 5.7 + +### Symptom + +The `BuildConfiguration.xml` contained: + +```xml + + /Zm300 + +``` + +UBT emitted a schema validation warning at build start: + +``` +warning: The element 'WindowsPlatform' has invalid child element 'AdditionalCompilerArguments'. +``` + +The element was silently dropped, so the `/Zm300` flag was never passed to `cl.exe`. + +### Root cause + +UE 5.7 removed `AdditionalCompilerArguments` from the `WindowsPlatform` section of +`BuildConfiguration.xml`. The replacement field is `PCHMemoryAllocationFactor`, which maps +directly to the MSVC `/Zm` compiler switch. + +### Fix + +```xml + +/Zm300 + + +300 +``` + +--- + +## Problem 2 — `C1076` / `C3859` PCH memory exhaustion under XGE executor + +### Symptom + +Even after Problem 1 was fixed and `/Zm300` was confirmed present in the compiler response +files (`.rsp`), the build still failed with: + +``` +c1xx: error C3859: Failed to create virtual memory for PCH +c1xx: note: the system returned code 1455: The paging file is too small for this operation to complete. +c1xx: fatal error C1076: compiler limit: internal heap limit reached +``` + +The errors appeared for 16+ translation units in a single burst. + +### Root cause + +The build was using the **XGE (Incredibuild) executor** (`Total time in XGE executor`). +Although Incredibuild had no active license (remote agents were unavailable), UBT still +dispatched the build through the XGE executor in local mode — and that executor **ignores +`MaxParallelActions`** from `BuildConfiguration.xml`. It can schedule far more concurrent +`cl.exe` processes than the configured limit. + +Each process that creates or loads a shared PCH with `/Zm300` reserves a large block of +virtual address space. With many processes running simultaneously, the system's commit +charge (physical RAM + page file) was exhausted, triggering error 1455. + +### Fix + +Two changes to `BuildConfiguration.xml`: + +1. **Disable the XGE executor** so that UBT falls back to the UBA local executor, which + correctly honours `MaxParallelActions`: + + ```xml + + false + + ``` + +2. **Reduce `MaxParallelActions`** from 8 to 4 to limit peak memory demand from + concurrent PCH allocations: + + ```xml + + 4 + + ``` + +--- + +## Final `BuildConfiguration.xml` + +Location: `%APPDATA%\Unreal Engine\UnrealBuildTool\BuildConfiguration.xml` + +```xml + + + + 4 + false + + + 300 + + +``` + +--- + +## Build command + +```bat +set CL=/Zm300 +"C:\Program Files\Epic Games\UE_5.7\Engine\Build\BatchFiles\RunUAT.bat" BuildPlugin ^ + -Plugin="\unreal\Puerts\Puerts.uplugin" ^ + -Package="" ^ + -Rocket +``` + +> **Note:** The `set CL=/Zm300` line is only effective when the command is run in a +> `cmd.exe` shell. When invoked through PowerShell or a Bash-based tool, use the +> `PCHMemoryAllocationFactor` setting in `BuildConfiguration.xml` instead (which is the +> recommended approach regardless). From 5991526e881d795840db42e19e43d78ed712cce9 Mon Sep 17 00:00:00 2001 From: Emil Atanasov Date: Tue, 12 May 2026 13:20:19 +0300 Subject: [PATCH 2/5] fix UE 5.7 Game target compilation errors UE 5.7 no longer injects ENGINE_MAJOR_VERSION into the compiler command line; it must be pulled from Runtime/Launch/Resources/Version.h. The SharedPCH for the Editor target happens to include it transitively, but the Game target's smaller PCH does not, causing C4668 errors on any file that tests that macro without an explicit include. Also add UObject/Package.h to JSClassRegister.cpp so that UPackage is fully defined when HasAnyPackageFlags is called in the Game target (where the monolithic Engine PCH is not present). Files changed: - DefaultJSModuleLoader.cpp: add Version.h before #if ENGINE_MAJOR_VERSION - ObjectRetainer.h: add Version.h before #if ENGINE_MAJOR_VERSION - JSClassRegister.cpp: add UObject/Package.h for full UPackage definition --- unreal/Puerts/Source/JsEnv/Private/DefaultJSModuleLoader.cpp | 1 + unreal/Puerts/Source/JsEnv/Private/JSClassRegister.cpp | 1 + unreal/Puerts/Source/JsEnv/Public/ObjectRetainer.h | 1 + 3 files changed, 3 insertions(+) diff --git a/unreal/Puerts/Source/JsEnv/Private/DefaultJSModuleLoader.cpp b/unreal/Puerts/Source/JsEnv/Private/DefaultJSModuleLoader.cpp index 9914903276..780b748717 100644 --- a/unreal/Puerts/Source/JsEnv/Private/DefaultJSModuleLoader.cpp +++ b/unreal/Puerts/Source/JsEnv/Private/DefaultJSModuleLoader.cpp @@ -10,6 +10,7 @@ #include "Misc/Paths.h" #include "Misc/FileHelper.h" #include "Algo/Reverse.h" +#include "Runtime/Launch/Resources/Version.h" #if (ENGINE_MAJOR_VERSION >= 5) #include "HAL/PlatformFileManager.h" #else diff --git a/unreal/Puerts/Source/JsEnv/Private/JSClassRegister.cpp b/unreal/Puerts/Source/JsEnv/Private/JSClassRegister.cpp index 784ef5daaf..3bd65aa20b 100644 --- a/unreal/Puerts/Source/JsEnv/Private/JSClassRegister.cpp +++ b/unreal/Puerts/Source/JsEnv/Private/JSClassRegister.cpp @@ -9,6 +9,7 @@ #include "JSClassRegister.h" #if USING_IN_UNREAL_ENGINE #include "UObject/Class.h" +#include "UObject/Package.h" #endif #include #include diff --git a/unreal/Puerts/Source/JsEnv/Public/ObjectRetainer.h b/unreal/Puerts/Source/JsEnv/Public/ObjectRetainer.h index 3b4a21cfd9..a804380873 100644 --- a/unreal/Puerts/Source/JsEnv/Public/ObjectRetainer.h +++ b/unreal/Puerts/Source/JsEnv/Public/ObjectRetainer.h @@ -11,6 +11,7 @@ #include "CoreMinimal.h" #include "UObject/GCObject.h" #include "PuertsNamespaceDef.h" +#include "Runtime/Launch/Resources/Version.h" #ifdef THREAD_SAFE #if defined(WITH_QJS_NAMESPACE_SUFFIX) From b196f2c6be6f1b0ac88e357faeec230413199cae Mon Sep 17 00:00:00 2001 From: Emil Atanasov Date: Tue, 9 Jun 2026 13:27:36 +0300 Subject: [PATCH 3/5] feat: fix the problems with keywords and add logs --- .../JavaScript/PuertsEditor/CodeAnalyze.js | 123 +++++++++++++++--- .../PuertsEditor/CodeAnalyze.js.map | 2 +- unreal/Puerts/PuertsEditor/CodeAnalyze.ts | 29 ++++- .../Private/DeclarationGenerator.cpp | 48 +++++++ .../Puerts/Source/JsEnv/Public/PathEscape.h | 28 ++++ 5 files changed, 209 insertions(+), 21 deletions(-) diff --git a/unreal/Puerts/Content/JavaScript/PuertsEditor/CodeAnalyze.js b/unreal/Puerts/Content/JavaScript/PuertsEditor/CodeAnalyze.js index 7aac5da657..51f7b3a7f5 100644 --- a/unreal/Puerts/Content/JavaScript/PuertsEditor/CodeAnalyze.js +++ b/unreal/Puerts/Content/JavaScript/PuertsEditor/CodeAnalyze.js @@ -26,9 +26,11 @@ function getCustomSystem() { }; function fileExists(path) { let res = UE.FileSystemOperation.FileExists(path); + //console.log(`${path} exists? ${res}`); return res; } function write(s) { + console.log(s); } function readFile(path, encoding) { let data = (0, puerts_1.$ref)(undefined); @@ -37,6 +39,7 @@ function getCustomSystem() { return (0, puerts_1.$unref)(data); } else { + console.warn("readFile: read file fail! path=" + path + ", stack:" + new Error().stack); return undefined; } } @@ -67,6 +70,30 @@ function getCustomSystem() { } return result; } + //for debug only + /*return new Proxy({}, { + get: function(target, name) { + if (!(name in target)) { + if (typeof name === 'string') { + if (!(name in tgamejsSystem)) { + return undefined; + } + let maybeFunc = tgamejsSystem[name]; + if (typeof maybeFunc === 'function') { + target[name] = function(...args: any[]) { + const res = maybeFunc(...args); + console.log("method:", name, ", args:", JSON.stringify(args), ",res:", res); + return res; + } + } else { + target[name] = tgamejsSystem[name]; + } + } + } + + return target[name] + } + }) as ts.System;*/ return customSystem; } let customSystem = getCustomSystem(); @@ -75,14 +102,30 @@ if (!ts.sys) { t.sys = customSystem; } function logErrors(allDiagnostics) { + if (!allDiagnostics || allDiagnostics.length === 0) { + return; + } + let errorCount = 0; + let warningCount = 0; allDiagnostics.forEach(diagnostic => { let message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"); - if (diagnostic.file) { + let category = ts.DiagnosticCategory[diagnostic.category]; // "Error" / "Warning" / "Message" / "Suggestion" + let code = `TS${diagnostic.code}`; + if (diagnostic.category === ts.DiagnosticCategory.Error) { + errorCount++; + } + else if (diagnostic.category === ts.DiagnosticCategory.Warning) { + warningCount++; + } + if (diagnostic.file && diagnostic.start !== undefined) { let { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start); + console.error(` [${category} ${code}] ${diagnostic.file.fileName}(${line + 1},${character + 1}): ${message}`); } else { + console.error(` [${category} ${code}] ${message}`); } }); + console.error(`PuertsEditor: TypeScript reported ${errorCount} error(s), ${warningCount} warning(s).`); } const FunctionFlags = { FUNC_None: 0x00000000, @@ -202,17 +245,19 @@ function readAndParseConfigFile(configFilePath) { readDirectory: customSystem.readDirectory, fileExists: customSystem.fileExists, readFile: customSystem.readFile, - trace: s => { } + trace: s => console.log(s) }, customSystem.getCurrentDirectory()); } function watch(configFilePath) { let { fileNames, options } = readAndParseConfigFile(configFilePath); + console.log("start watch..", JSON.stringify({ fileNames: fileNames, options: options })); const versionsFilePath = tsi.getDirectoryPath(configFilePath) + "/ts_file_versions_info.json"; const fileVersions = {}; let beginTime = new Date().getTime(); fileNames.forEach(fileName => { fileVersions[fileName] = { version: UE.FileSystemOperation.FileMD5Hash(fileName), processed: false, isBP: false }; }); + console.log("calc md5 using " + (new Date().getTime() - beginTime) + "ms"); function getDefaultLibLocation() { return tsi.getDirectoryPath(tsi.normalizePath(customSystem.getExecutingFilePath())); } @@ -232,6 +277,7 @@ function watch(configFilePath) { }, getScriptSnapshot: fileName => { if (!customSystem.fileExists(fileName)) { + console.error("getScriptSnapshot: file not existed! path=" + fileName); return undefined; } if (!(fileName in fileVersions)) { @@ -240,6 +286,7 @@ function watch(configFilePath) { if (!scriptSnapshotsCache.has(fileName)) { const sourceFile = customSystem.readFile(fileName); if (!sourceFile) { + console.error("getScriptSnapshot: read file failed! path=" + fileName); return undefined; } scriptSnapshotsCache.set(fileName, { @@ -251,11 +298,13 @@ function watch(configFilePath) { if (scriptSnapshotsInfo.version != fileVersions[fileName].version) { const sourceFile = customSystem.readFile(fileName); if (!sourceFile) { + console.error("getScriptSnapshot: read file failed! path=" + fileName); return undefined; } scriptSnapshotsInfo.version = fileVersions[fileName].version; scriptSnapshotsInfo.scriptSnapshot = ts.ScriptSnapshot.fromString(sourceFile); } + //console.log("getScriptSnapshot:"+ fileName + ",in:" + new Error().stack) return scriptSnapshotsInfo.scriptSnapshot; }, getCurrentDirectory: customSystem.getCurrentDirectory, @@ -274,8 +323,9 @@ function watch(configFilePath) { return service.getProgram(); } catch (e) { + console.error(e); } - //An exception causes a new Language Service to be created. It is possible that it will continue to fail. UE file reading will occasionally fail, and after the failure, ts incremental compilation will continue to fail the assertion at tryReuseStructureFromOldProgram + //异常了从新创建Language Service,有可能不断失败,UE的文件读取偶尔会失败,失败后ts增量编译会不断的在tryReuseStructureFromOldProgram那断言失败 service = ts.createLanguageService(servicesHost, ts.createDocumentRegistry()); } } @@ -322,6 +372,7 @@ function watch(configFilePath) { } beginTime = new Date().getTime(); let program = getProgramFromService(); + console.log("full compile using " + (new Date().getTime() - beginTime) + "ms"); let diagnostics = ts.getPreEmitDiagnostics(program); let restoredFileVersions = {}; var changed = false; @@ -329,6 +380,7 @@ function watch(configFilePath) { if (versionsFileExisted) { try { restoredFileVersions = JSON.parse(customSystem.readFile(versionsFilePath)); + console.log("restore versions from ", versionsFilePath); } catch { } } @@ -336,7 +388,15 @@ function watch(configFilePath) { fileNames.forEach(fileName => { fileVersions[fileName] = restoredFileVersions[fileName] || fileVersions[fileName]; }); + console.error("==================== PuertsEditor: TypeScript compilation FAILED ===================="); logErrors(diagnostics); + // If any diagnostic points at the generated declaration files, the type generation produced invalid TypeScript. + const declErrors = diagnostics.filter(d => d.file && /ue(_bp)?\.d\.ts$/.test(d.file.fileName)); + if (declErrors.length > 0) { + console.error(`PuertsEditor: ${declErrors.length} error(s) originate from generated declaration files (ue.d.ts/ue_bp.d.ts). Regenerate the types (the generator now rejects TypeScript reserved words).`); + } + console.error("PuertsEditor: No JavaScript/Blueprints were generated because of the errors above. Fix them and save again."); + console.error("====================================================================================="); } else { function getClassPathInfo(sourceFilePath) { @@ -387,7 +447,7 @@ function watch(configFilePath) { } } var dirWatcher = new UE.PEDirectoryWatcher(); - global.__dirWatcher = dirWatcher; //prevent it from being released? + global.__dirWatcher = dirWatcher; //防止被释放? dirWatcher.OnChanged.Add((added, modified, removed) => { setTimeout(() => { var changed = false; @@ -418,8 +478,10 @@ function watch(configFilePath) { if (fileName in fileVersions) { let md5 = UE.FileSystemOperation.FileMD5Hash(fileName); if (md5 === fileVersions[fileName].version) { + console.log(fileName + " md5 not changed, so skiped!"); } else { + console.log(`${fileName} md5 from ${fileVersions[fileName].version} to ${md5}`); fileVersions[fileName].version = md5; onSourceFileAddOrChange(fileName, true); changed = true; @@ -428,9 +490,10 @@ function watch(configFilePath) { }); refreshBlueprints(); if (changed) { + console.log("versions saved to " + versionsFilePath); UE.FileSystemOperation.WriteFile(versionsFilePath, JSON.stringify(fileVersions, null, 4)); } - }, 100); //Delay 100 milliseconds to prevent file reading failure due to read conflict + }, 100); //延时100毫秒,防止因为读冲突而文件读取失败 }); dirWatcher.Watch(customSystem.getCurrentDirectory()); function onFileAdded() { @@ -438,6 +501,7 @@ function watch(configFilePath) { let newFiles = []; cmdLine.fileNames.forEach(fileName => { if (!(fileName in fileVersions)) { + console.log(`new file: ${fileName} ...`); newFiles.push(fileName); fileVersions[fileName] = { version: UE.FileSystemOperation.FileMD5Hash(fileName), processed: false }; } @@ -453,6 +517,7 @@ function watch(configFilePath) { if (!program) { let beginTime = new Date().getTime(); program = getProgramFromService(); + console.log("incremental compile " + sourceFilePath + " using " + (new Date().getTime() - beginTime) + "ms"); } let sourceFile = program.getSourceFile(sourceFilePath); if (sourceFile) { @@ -477,6 +542,7 @@ function watch(configFilePath) { let jsSource = undefined; emitOutput.outputFiles.forEach(output => { if (doEmitJs) { + console.log(`write ${output.name} ...`); UE.FileSystemOperation.WriteFile(output.name, output.text); } if (output.name.endsWith(".js") || output.name.endsWith(".mjs")) { @@ -501,6 +567,7 @@ function watch(configFilePath) { if (!type || !type.getSymbol()) return; if (type.getSymbol().getName() != tsi.getBaseFileName(moduleFileName)) { + //console.error("type name must the same as file name!"); return; } let baseTypes = type.getBaseTypes(); @@ -515,15 +582,18 @@ function watch(configFilePath) { baseTypeUClass = structOfType; } else { + console.warn("do not support UStruct:" + checker.typeToString(type)); return; } if (baseTypeUClass) { if (isSubclassOf(type, "Subsystem")) { + console.error("do not support Subsystem " + checker.typeToString(type)); return; } if (!baseTypeUClass.IsNative()) { let moduleNames = getModuleNames(baseTypes[0]); if (moduleNames.length > 1 && moduleNames[0] == 'ue') { + console.error(`${checker.typeToString(type)} extends a blueprint`); return; } } @@ -531,6 +601,7 @@ function watch(configFilePath) { foundBaseTypeUClass = baseTypeUClass; } else { + console.warn("can not find base for " + checker.typeToString(type)); } } }); @@ -572,6 +643,7 @@ function watch(configFilePath) { } } catch (e) { + console.error(`load ue type [${type.symbol.getName()}], throw: ${e}`); } } else if (moduleNames.length == 2) { @@ -587,6 +659,7 @@ function watch(configFilePath) { let baseTypeUClass = getUClassOfType(baseTypes[0]); if (!baseTypeUClass) return undefined; + //console.error("modulePath:", getModulePath(type.symbol.valueDeclaration.getSourceFile().fileName)); let sourceFile = type.symbol.valueDeclaration.getSourceFile(); let sourceFileName; program.emit(sourceFile, writeFile, undefined, false, undefined); @@ -596,6 +669,7 @@ function watch(configFilePath) { } } if (tsi.getBaseFileName(sourceFileName) != type.symbol.getName()) { + console.error("type name must the same as file name!"); return undefined; } if (options.outDir && sourceFileName.startsWith(options.outDir)) { @@ -623,6 +697,7 @@ function watch(configFilePath) { return undefined; try { let typeNode = checker.typeToTypeNode(type, undefined, undefined); + //console.log(checker.typeToString(type), tds) if (ts.isTypeReferenceNode(typeNode) && type.symbol) { let typeName = type.symbol.getName(); if (typeName == 'BigInt') { @@ -638,6 +713,7 @@ function watch(configFilePath) { if (uenum) { return { pinType: new UE.PEGraphPinType("byte", uenum, UE.EPinContainerType.None, false, false) }; } + console.warn("can not find type of " + typeName); return undefined; } let pinType = new UE.PEGraphPinType(category, uclass, UE.EPinContainerType.None, false, false); @@ -651,6 +727,7 @@ function watch(configFilePath) { typeName = typeRef.aliasSymbol.getName(); } if (!typeArguments) { + console.warn("can not find type arguments of " + node.getFullText()); return undefined; } if (node) { @@ -660,6 +737,7 @@ function watch(configFilePath) { } let result = tsTypeToPinType(typeArguments[0], children[1]); if (!result || result.pinType.PinContainerType != UE.EPinContainerType.None && typeName != '$Ref' && typeName != '$InRef') { + console.warn("can not find pin type of typeArguments[0] " + typeName); return undefined; } if (children[1]) { @@ -696,6 +774,7 @@ function watch(configFilePath) { else if (typeName == 'TMap') { let valuePinType = tsTypeToPinType(typeArguments[1], undefined); if (!valuePinType || valuePinType.pinType.PinContainerType != UE.EPinContainerType.None) { + console.warn("can not find pin type of typeArguments[1] " + typeName); return undefined; } if (children[2]) { @@ -706,6 +785,7 @@ function watch(configFilePath) { return result; } else { + console.warn("not support generic type: " + typeName); return undefined; } } @@ -727,6 +807,7 @@ function watch(configFilePath) { category = 'bool'; break; default: + console.warn("not support kind: " + typeNode.kind); return undefined; } let pinType = new UE.PEGraphPinType(category, undefined, UE.EPinContainerType.None, false, false); @@ -734,6 +815,7 @@ function watch(configFilePath) { } } catch (e) { + console.error(e.stack || e); return undefined; } } @@ -815,6 +897,7 @@ function watch(configFilePath) { return ret; } function onBlueprintTypeAddOrChange(baseTypeUClass, type, modulePath) { + console.log(`gen blueprint for ${type.getSymbol().getName()}, path: ${modulePath}`); let lsFunctionLibrary = baseTypeUClass && baseTypeUClass.GetName() === "BlueprintFunctionLibrary"; let bp = new UE.PEBlueprintAsset(); bp.LoadOrCreateWithMetaData(type.getSymbol().getName(), modulePath, baseTypeUClass, 0, 0, uemeta.compileClassMetaData(type)); @@ -824,13 +907,16 @@ function watch(configFilePath) { if (ts.isMethodDeclaration(x) && !manualSkip(x)) { let isStatic = !!(ts.getCombinedModifierFlags(x) & ts.ModifierFlags.Static); if (isStatic && !lsFunctionLibrary) { + console.warn(`do not support static function [${x.name.getText()}]`); return; } if (!isStatic && lsFunctionLibrary) { + console.warn(`do not support non-static function [${x.name.getText()}] in BlueprintFunctionLibrary`); return; } if (x.name.getText() === 'ReceiveInit') { if (baseTypeUClass == UE.GameInstance.StaticClass() || baseTypeUClass.IsChildOf(UE.GameInstance.StaticClass())) { + console.warn(`do not support override GameInstance.ReceiveInit in ${type.getSymbol().getName()}`); return; } } @@ -839,6 +925,7 @@ function watch(configFilePath) { else if (ts.isPropertyDeclaration(x) && !manualSkip(x)) { let isStatic = !!(ts.getCombinedModifierFlags(x) & ts.ModifierFlags.Static); if (isStatic) { + console.warn("static property:" + x.name.getText() + ' not support'); return; } properties.push(checker.getSymbolAtLocation(x.name)); @@ -856,9 +943,11 @@ function watch(configFilePath) { let methodType = checker.getTypeOfSymbolAtLocation(symbol, symbol.valueDeclaration); let signatures = checker.getSignaturesOfType(methodType, ts.SignatureKind.Call); if (!signatures) { + console.warn(`can not find signature for ${symbol.getName()} `); return; } if (signatures.length != 1) { + console.warn(`find more than one signature for ${symbol.getName()} `); return; } let signature = signatures[0]; @@ -866,6 +955,7 @@ function watch(configFilePath) { let paramType = checker.getTypeOfSymbolAtLocation(signature.parameters[i], signature.parameters[i].valueDeclaration); let paramPinType = tsTypeToPinType(paramType, getSymbolTypeNode(signature.parameters[i])); if (!paramPinType) { + console.warn(symbol.getName() + " of " + checker.typeToString(type) + " has not supported parameter!"); bp.ClearParameter(); return; } @@ -873,6 +963,7 @@ function watch(configFilePath) { // bp.AddParameter(signature.parameters[i].getName(), paramPinType.pinType, paramPinType.pinValueType); bp.AddParameterWithMetaData(signature.parameters[i].getName(), paramPinType.pinType, paramPinType.pinValueType, uemeta.compileParamMetaData(signature.parameters[i])); } + //console.log("add function", symbol.getName()); let sflags = tryGetAnnotation(symbol.valueDeclaration, "flags", true); let flags = getFlagsValue(sflags, FunctionFlags); let clearFlags = 0; @@ -889,6 +980,7 @@ function watch(configFilePath) { let returnType = signature.getReturnType(); let resultPinType = tsTypeToPinType(returnType, getSymbolTypeNode(symbol)); if (!resultPinType) { + console.warn(symbol.getName() + " of " + checker.typeToString(type) + " has not supported return type!"); bp.ClearParameter(); return; } @@ -902,29 +994,27 @@ function watch(configFilePath) { let propType = checker.getTypeOfSymbolAtLocation(symbol, symbol.valueDeclaration); let propPinType = tsTypeToPinType(propType, getSymbolTypeNode(symbol)); if (!propPinType) { + console.warn(symbol.getName() + " of " + checker.typeToString(type) + " not support!"); } else { postProcessPinType(symbol.valueDeclaration, propPinType.pinType, true); + //console.log("add member variable", symbol.getName()); let sflags = tryGetAnnotation(symbol.valueDeclaration, "flags", true); let localFlags = BigInt(getFlagsValue(sflags, PropertyFlags)); // From //@flags let cond = 0; - if (symbol.valueDeclaration && symbol.valueDeclaration.decorators) { // Handle @flags() decorator localFlags |= getDecoratorFlagsValue(symbol.valueDeclaration, "flags", PropertyFlags); - // Handle @condition() for CPF_Net cond = Number(getDecoratorFlagsValue(symbol.valueDeclaration, "condition", ELifetimeCondition)); if (cond != 0) { - localFlags |= BigInt(PropertyFlags.CPF_Net); + localFlags |= BigInt(PropertyFlags.CPF_Net); } - // Handle specific @edit_on_instance decorator as an override if (hasDecorator(symbol.valueDeclaration, "edit_on_instance")) { localFlags &= ~BigInt(PropertyFlags.CPF_DisableEditOnInstance); // Remove restriction localFlags |= BigInt(PropertyFlags.CPF_Edit); // Ensure it's editable if this is used } - // Attachment logic (preserved) symbol.valueDeclaration.decorators.forEach((decorator) => { let expression = decorator.expression; @@ -937,22 +1027,19 @@ function watch(configFilePath) { } }); } - let propertyMetaData = uemeta.compilePropertyMetaData(symbol); - // If UEMeta provides no metadata (e.g. no @uproperty decorator on the member) AND // localFlags themselves don't already make the property editable, // then apply a default CPF_DisableEditOnInstance to localFlags. // This makes un-decorated or un-annotated properties non-editable on instances by default. if (!propertyMetaData && !(localFlags & BigInt(PropertyFlags.CPF_Edit))) { // Check hasDecorator again because the main decorators loop might not have run if no decorators exist at all - if (!symbol.valueDeclaration || !symbol.valueDeclaration.decorators || !hasDecorator(symbol.valueDeclaration, "edit_on_instance")) { - localFlags |= BigInt(PropertyFlags.CPF_DisableEditOnInstance); + if (!symbol.valueDeclaration || !symbol.valueDeclaration.decorators || !hasDecorator(symbol.valueDeclaration, "edit_on_instance")) { + localFlags |= BigInt(PropertyFlags.CPF_DisableEditOnInstance); } } - // When propertyMetaData *is* present, its internal flags (derived by UEMeta.js from EditAnywhere etc.) + // When propertyMetaData *is* present, its internal flags (derived by UEMeta.ts from EditAnywhere etc.) // are authoritative. localFlags here are for truly additional/override flags. - bp.AddMemberVariableWithMetaData(symbol.getName(), propPinType.pinType, propPinType.pinValueType, Number(localFlags & 0xffffffffn), Number(localFlags >> 32n), cond, propertyMetaData); } } @@ -1009,9 +1096,11 @@ function watch(configFilePath) { } function list(pattern) { var re = new RegExp(pattern ? pattern : '.*'); + console.log(`id\t\t\t\t\t\t\t\t\tprocessed\tisBP\tpath`); for (var key in fileVersions) { var value = fileVersions[key]; if (!pattern || re.test(key)) { + console.log(`${value.version}\t${!!value.processed}\t\t${!!value.isBP}\t${key}`); } } } @@ -1019,6 +1108,7 @@ function watch(configFilePath) { for (var key in fileVersions) { var value = fileVersions[key]; if (value.version === id.trim()) { + console.log(`compiling ${key} ...`); onSourceFileAddOrChange(key, true); } } @@ -1032,6 +1122,7 @@ function watch(configFilePath) { compile(args); } else { + console.error(`unknow command for Puerts ${cmd}`); } } cpp.FPuertsEditorModule.SetCmdCallback(dispatchCmd); diff --git a/unreal/Puerts/Content/JavaScript/PuertsEditor/CodeAnalyze.js.map b/unreal/Puerts/Content/JavaScript/PuertsEditor/CodeAnalyze.js.map index 12c022ab05..da4569202f 100644 --- a/unreal/Puerts/Content/JavaScript/PuertsEditor/CodeAnalyze.js.map +++ b/unreal/Puerts/Content/JavaScript/PuertsEditor/CodeAnalyze.js.map @@ -1 +1 @@ -{"version":3,"file":"CodeAnalyze.js","sourceRoot":"","sources":["../../../PuertsEditor/CodeAnalyze.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"CodeAnalyze.js","sourceRoot":"","sources":["../../../../Documents/Projects/UE-sourcecode/puerts/unreal/Puerts/PuertsEditor/CodeAnalyze.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/unreal/Puerts/PuertsEditor/CodeAnalyze.ts b/unreal/Puerts/PuertsEditor/CodeAnalyze.ts index 3797ee6b28..62f404d47f 100644 --- a/unreal/Puerts/PuertsEditor/CodeAnalyze.ts +++ b/unreal/Puerts/PuertsEditor/CodeAnalyze.ts @@ -114,17 +114,30 @@ if (!ts.sys) { } function logErrors(allDiagnostics: readonly ts.Diagnostic[]) { + if (!allDiagnostics || allDiagnostics.length === 0) { + return; + } + let errorCount = 0; + let warningCount = 0; allDiagnostics.forEach(diagnostic => { let message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"); - if (diagnostic.file) { + let category = ts.DiagnosticCategory[diagnostic.category]; // "Error" / "Warning" / "Message" / "Suggestion" + let code = `TS${diagnostic.code}`; + if (diagnostic.category === ts.DiagnosticCategory.Error) { + errorCount++; + } else if (diagnostic.category === ts.DiagnosticCategory.Warning) { + warningCount++; + } + if (diagnostic.file && diagnostic.start !== undefined) { let { line, character } = diagnostic.file.getLineAndCharacterOfPosition( - diagnostic.start! + diagnostic.start ); - console.error(` Error ${diagnostic.file.fileName} (${line + 1},${character +1}): ${message}`); + console.error(` [${category} ${code}] ${diagnostic.file.fileName}(${line + 1},${character + 1}): ${message}`); } else { - console.error(` Error: ${message}`); + console.error(` [${category} ${code}] ${message}`); } }); + console.error(`PuertsEditor: TypeScript reported ${errorCount} error(s), ${warningCount} warning(s).`); } type PinCategory = "bool" | "class" | "int64" | "string" | "object" | "struct" | "float" | "enum" | "softobject" | "softclass"; @@ -416,7 +429,15 @@ function watch(configFilePath:string) { fileNames.forEach(fileName => { fileVersions[fileName] = restoredFileVersions[fileName] || fileVersions[fileName]; }); + console.error("==================== PuertsEditor: TypeScript compilation FAILED ===================="); logErrors(diagnostics); + // If any diagnostic points at the generated declaration files, the type generation produced invalid TypeScript. + const declErrors = diagnostics.filter(d => d.file && /ue(_bp)?\.d\.ts$/.test(d.file.fileName)); + if (declErrors.length > 0) { + console.error(`PuertsEditor: ${declErrors.length} error(s) originate from generated declaration files (ue.d.ts/ue_bp.d.ts). Regenerate the types (the generator now rejects TypeScript reserved words).`); + } + console.error("PuertsEditor: No JavaScript/Blueprints were generated because of the errors above. Fix them and save again."); + console.error("====================================================================================="); } else { function getClassPathInfo(sourceFilePath: string): {moduleFileName:string, modulePath:string} { let modulePath:string = undefined; diff --git a/unreal/Puerts/Source/DeclarationGenerator/Private/DeclarationGenerator.cpp b/unreal/Puerts/Source/DeclarationGenerator/Private/DeclarationGenerator.cpp index d9ecd74be5..ad3c6863bd 100644 --- a/unreal/Puerts/Source/DeclarationGenerator/Private/DeclarationGenerator.cpp +++ b/unreal/Puerts/Source/DeclarationGenerator/Private/DeclarationGenerator.cpp @@ -77,6 +77,38 @@ bool IsTypeScriptKeyword(const FString& InputString) return TypeScriptKeywords.Contains(InputString); } +// Verification step: scan a generated declaration file for any type/namespace declared with a TypeScript +// reserved word as its identifier (e.g. `namespace enum {`, `enum class {`). FilenameToTypeScriptVariableName +// already escapes such names, so this is a defense-in-depth check: any hit here means the generated .d.ts +// will not compile and would silently abort the PuertsEditor build. Returns the number of violations found. +static int32 VerifyNoReservedWordIdentifiers(const FString& Content, const FString& FileLabel) +{ + const FRegexPattern Pattern(TEXT("\\b(namespace|enum|class|interface)\\s+([A-Za-z_$][A-Za-z0-9_$]*)")); + FRegexMatcher Matcher(Pattern, Content); + int32 ViolationCount = 0; + while (Matcher.FindNext()) + { + const FString Kind = Matcher.GetCaptureGroup(1); + const FString Identifier = Matcher.GetCaptureGroup(2); + if (PUERTS_NAMESPACE::IsTypeScriptReservedWord(Identifier)) + { + ViolationCount++; + UE_LOG(LogTemp, Error, + TEXT("[Puerts] %s: '%s %s' uses TypeScript reserved word '%s' as an identifier - the declaration " + "file is invalid and TypeScript compilation will abort."), + *FileLabel, *Kind, *Identifier, *Identifier); + } + } + if (ViolationCount > 0) + { + UE_LOG(LogTemp, Error, + TEXT("[Puerts] %s contains %d reserved-word identifier(s); generated types will not compile. This should " + "not happen with the keyword-safe naming rule - please report it."), + *FileLabel, ViolationCount); + } + return ViolationCount; +} + static FString SafeName(const FString& Name) { auto Ret = Name.Replace(TEXT(" "), TEXT("")) @@ -432,6 +464,7 @@ void FTypeScriptDeclarationGenerator::GenTypeScriptDeclaration(bool InGenStruct, #endif FFileHelper::SaveStringToFile(ToString(), *UEDeclarationFilePath, FFileHelper::EEncodingOptions::ForceUTF8WithoutBOM); + VerifyNoReservedWordIdentifiers(ToString(), TEXT("ue.d.ts")); Begin(); for (auto& KV : BlueprintTypeDeclInfoCache) @@ -455,6 +488,21 @@ void FTypeScriptDeclarationGenerator::GenTypeScriptDeclaration(bool InGenStruct, #endif FFileHelper::SaveStringToFile(ToString(), *BPDeclarationFilePath, FFileHelper::EEncodingOptions::ForceUTF8WithoutBOM); + VerifyNoReservedWordIdentifiers(ToString(), TEXT("ue_bp.d.ts")); + + // Generate the entry declaration (index.d.ts) so the `ue` module always resolves to both the engine + // (ue.d.ts) and blueprint (ue_bp.d.ts) declarations. Previously this file was only seeded by a + // non-overwriting directory copy, so a stale/incomplete index.d.ts left in the project could break + // `import * as UE from 'ue'`. We (re)write it on every generation. + const FString UEIndexFilePath = FPaths::ProjectDir() / TEXT("Typing/ue/index.d.ts"); + const FString UEIndexContent = TEXT("/// \n") + TEXT("/// \n") + TEXT("/// \n") + TEXT("/// \n"); +#ifdef PUERTS_WITH_SOURCE_CONTROL + PuertsSourceControlUtils::MakeSourceControlFileWritable(UEIndexFilePath); +#endif + FFileHelper::SaveStringToFile(UEIndexContent, *UEIndexFilePath, FFileHelper::EEncodingOptions::ForceUTF8WithoutBOM); } static UPackage* GetPackage(UObject* Obj) diff --git a/unreal/Puerts/Source/JsEnv/Public/PathEscape.h b/unreal/Puerts/Source/JsEnv/Public/PathEscape.h index 32165f11f9..29b4b77a14 100644 --- a/unreal/Puerts/Source/JsEnv/Public/PathEscape.h +++ b/unreal/Puerts/Source/JsEnv/Public/PathEscape.h @@ -12,6 +12,26 @@ namespace PUERTS_NAMESPACE { +// ECMAScript reserved words. None of these may be used as a bare binding identifier, so a generated +// `namespace enum { ... }`, `enum class { ... }`, `class default { ... }` etc. is a TypeScript syntax error. +// `skipLibCheck` does NOT suppress such grammar errors in .d.ts files, so a single occurrence aborts the +// whole PuertsEditor compilation. Contextual keywords (any, as, type, namespace, module, ...) are legal as +// identifiers and are intentionally excluded so we never rename a name that did not need it. +FORCEINLINE bool IsTypeScriptReservedWord(const FString& Identifier) +{ + static const TArray ReservedWords = {TEXT("await"), TEXT("break"), TEXT("case"), TEXT("catch"), + TEXT("class"), TEXT("const"), TEXT("continue"), TEXT("debugger"), TEXT("default"), TEXT("delete"), TEXT("do"), + TEXT("else"), TEXT("enum"), TEXT("export"), TEXT("extends"), TEXT("false"), TEXT("finally"), TEXT("for"), + TEXT("function"), TEXT("if"), TEXT("import"), TEXT("in"), TEXT("instanceof"), TEXT("new"), TEXT("null"), + TEXT("return"), TEXT("super"), TEXT("switch"), TEXT("this"), TEXT("throw"), TEXT("true"), TEXT("try"), + TEXT("typeof"), TEXT("var"), TEXT("void"), TEXT("while"), TEXT("with"), + // future reserved words in strict mode (a .d.ts is parsed in strict mode) + TEXT("implements"), TEXT("interface"), TEXT("let"), TEXT("package"), TEXT("private"), TEXT("protected"), + TEXT("public"), TEXT("static"), TEXT("yield")}; + + return ReservedWords.Contains(Identifier); +} + FORCEINLINE FString FilenameToTypeScriptVariableName(const FString& Filename) { FString TypeScriptVariable; @@ -36,6 +56,14 @@ FORCEINLINE FString FilenameToTypeScriptVariableName(const FString& Filename) TypeScriptVariable.AppendChar('$'); } } + // A reserved word can not be emitted as a bare identifier. Escape its first character with the same + // reversible `$$` scheme used above; the result (e.g. "enum" -> "$101$num") is a valid, + // non-reserved identifier that TypeScriptVariableNameToFilename() restores to the original name, so + // runtime class/enum/struct loading (FStructWrapper::Load with UnEscape=true) keeps working. + if (IsTypeScriptReservedWord(TypeScriptVariable)) + { + TypeScriptVariable = FString::Printf(TEXT("$%d$"), (int) TypeScriptVariable[0]) + TypeScriptVariable.RightChop(1); + } return TypeScriptVariable; } From e1dfecbef2e76e96bd5ddd73c4291d9646957df1 Mon Sep 17 00:00:00 2001 From: Emil Atanasov Date: Tue, 9 Jun 2026 14:04:47 +0300 Subject: [PATCH 4/5] feat: switch to the new node version --- unreal/Puerts/Config/FilterPlugin.ini | 8 ++++++++ unreal/Puerts/Source/JsEnv/JsEnv.Build.cs | 10 +++++----- 2 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 unreal/Puerts/Config/FilterPlugin.ini diff --git a/unreal/Puerts/Config/FilterPlugin.ini b/unreal/Puerts/Config/FilterPlugin.ini new file mode 100644 index 0000000000..ccebca2f32 --- /dev/null +++ b/unreal/Puerts/Config/FilterPlugin.ini @@ -0,0 +1,8 @@ +[FilterPlugin] +; This section lists additional files which will be packaged along with your plugin. Paths should be listed relative to the root plugin directory, and +; may include "...", "*", and "?" wildcards to match directories, files, and individual characters respectively. +; +; Examples: +; /README.txt +; /Extras/... +; /Binaries/ThirdParty/*.dll diff --git a/unreal/Puerts/Source/JsEnv/JsEnv.Build.cs b/unreal/Puerts/Source/JsEnv/JsEnv.Build.cs index 840511bad3..33493f088b 100644 --- a/unreal/Puerts/Source/JsEnv/JsEnv.Build.cs +++ b/unreal/Puerts/Source/JsEnv/JsEnv.Build.cs @@ -22,7 +22,7 @@ enum SupportedV8Versions private SupportedV8Versions UseV8Version = #if UE_4_25_OR_LATER - SupportedV8Versions.V9_4_146_24; + SupportedV8Versions.V11_8_172; #else SupportedV8Versions.VDeprecated; #endif @@ -73,15 +73,15 @@ public JsEnv(ReadOnlyTargetRules Target) : base(Target) PublicDefinitions.Add("WITH_WEBSOCKET"); PublicDefinitions.Add("WITH_WEBSOCKET_SSL"); PublicDependencyModuleNames.Add("OpenSSL"); - } - - + } + + #if UE_5_6_OR_LATER CppCompileWarningSettings.ShadowVariableWarningLevel = WarningLevel.Warning; #else ShadowVariableWarningLevel = WarningLevel.Warning; #endif - + if (!FTextAsString) { PublicDefinitions.Add("PUERTS_FTEXT_AS_OBJECT"); From a3f75f9b5d7e717579e16a7fe08c7af1f78be077 Mon Sep 17 00:00:00 2001 From: Christian Rizov Date: Tue, 30 Jun 2026 17:08:41 +0300 Subject: [PATCH 5/5] Unreal5.7 - CI fixes (#2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: project specific clang-format applied * feat: Reverted the V8 to 9.4.146.24 per review * feat: correct reserved-word verification false positives 1. Anchor VerifyNoReservedWordIdentifiers regex to line-start declarations so reserved words inside JSDoc prose aren't flagged. 2. Make IsTypeScriptReservedWord case-sensitive (ESearchCase::CaseSensitive) so PascalCase UE types (Class, Enum, Function, ...) aren't wrongly flagged/escaped — TypeScript keywords are case-sensitive. --- .../Private/DeclarationGenerator.cpp | 12 ++++++----- unreal/Puerts/Source/JsEnv/JsEnv.Build.cs | 2 +- .../Puerts/Source/JsEnv/Public/PathEscape.h | 21 +++++++++++-------- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/unreal/Puerts/Source/DeclarationGenerator/Private/DeclarationGenerator.cpp b/unreal/Puerts/Source/DeclarationGenerator/Private/DeclarationGenerator.cpp index ad3c6863bd..bf4dffb12e 100644 --- a/unreal/Puerts/Source/DeclarationGenerator/Private/DeclarationGenerator.cpp +++ b/unreal/Puerts/Source/DeclarationGenerator/Private/DeclarationGenerator.cpp @@ -81,9 +81,13 @@ bool IsTypeScriptKeyword(const FString& InputString) // reserved word as its identifier (e.g. `namespace enum {`, `enum class {`). FilenameToTypeScriptVariableName // already escapes such names, so this is a defense-in-depth check: any hit here means the generated .d.ts // will not compile and would silently abort the PuertsEditor build. Returns the number of violations found. +// The pattern is anchored to the start of a line (after `^` or a newline) so that the declaration keyword +// must be the first token on its line; otherwise the same words occurring in JSDoc prose (e.g. "...the +// class for given controller", "...include the namespace in a token") would be flagged as false positives. static int32 VerifyNoReservedWordIdentifiers(const FString& Content, const FString& FileLabel) { - const FRegexPattern Pattern(TEXT("\\b(namespace|enum|class|interface)\\s+([A-Za-z_$][A-Za-z0-9_$]*)")); + const FRegexPattern Pattern( + TEXT("(?:^|\\n)\\s*(?:export\\s+)?(?:declare\\s+)?(namespace|enum|class|interface)\\s+([A-Za-z_$][A-Za-z0-9_$]*)")); FRegexMatcher Matcher(Pattern, Content); int32 ViolationCount = 0; while (Matcher.FindNext()) @@ -495,10 +499,8 @@ void FTypeScriptDeclarationGenerator::GenTypeScriptDeclaration(bool InGenStruct, // non-overwriting directory copy, so a stale/incomplete index.d.ts left in the project could break // `import * as UE from 'ue'`. We (re)write it on every generation. const FString UEIndexFilePath = FPaths::ProjectDir() / TEXT("Typing/ue/index.d.ts"); - const FString UEIndexContent = TEXT("/// \n") - TEXT("/// \n") - TEXT("/// \n") - TEXT("/// \n"); + const FString UEIndexContent = TEXT("/// \n") TEXT("/// \n") + TEXT("/// \n") TEXT("/// \n"); #ifdef PUERTS_WITH_SOURCE_CONTROL PuertsSourceControlUtils::MakeSourceControlFileWritable(UEIndexFilePath); #endif diff --git a/unreal/Puerts/Source/JsEnv/JsEnv.Build.cs b/unreal/Puerts/Source/JsEnv/JsEnv.Build.cs index 33493f088b..519253f524 100644 --- a/unreal/Puerts/Source/JsEnv/JsEnv.Build.cs +++ b/unreal/Puerts/Source/JsEnv/JsEnv.Build.cs @@ -22,7 +22,7 @@ enum SupportedV8Versions private SupportedV8Versions UseV8Version = #if UE_4_25_OR_LATER - SupportedV8Versions.V11_8_172; + SupportedV8Versions.V9_4_146_24; #else SupportedV8Versions.VDeprecated; #endif diff --git a/unreal/Puerts/Source/JsEnv/Public/PathEscape.h b/unreal/Puerts/Source/JsEnv/Public/PathEscape.h index 29b4b77a14..0c6e4d1847 100644 --- a/unreal/Puerts/Source/JsEnv/Public/PathEscape.h +++ b/unreal/Puerts/Source/JsEnv/Public/PathEscape.h @@ -19,17 +19,20 @@ namespace PUERTS_NAMESPACE // identifiers and are intentionally excluded so we never rename a name that did not need it. FORCEINLINE bool IsTypeScriptReservedWord(const FString& Identifier) { - static const TArray ReservedWords = {TEXT("await"), TEXT("break"), TEXT("case"), TEXT("catch"), - TEXT("class"), TEXT("const"), TEXT("continue"), TEXT("debugger"), TEXT("default"), TEXT("delete"), TEXT("do"), - TEXT("else"), TEXT("enum"), TEXT("export"), TEXT("extends"), TEXT("false"), TEXT("finally"), TEXT("for"), - TEXT("function"), TEXT("if"), TEXT("import"), TEXT("in"), TEXT("instanceof"), TEXT("new"), TEXT("null"), - TEXT("return"), TEXT("super"), TEXT("switch"), TEXT("this"), TEXT("throw"), TEXT("true"), TEXT("try"), - TEXT("typeof"), TEXT("var"), TEXT("void"), TEXT("while"), TEXT("with"), + static const TArray ReservedWords = {TEXT("await"), TEXT("break"), TEXT("case"), TEXT("catch"), TEXT("class"), + TEXT("const"), TEXT("continue"), TEXT("debugger"), TEXT("default"), TEXT("delete"), TEXT("do"), TEXT("else"), TEXT("enum"), + TEXT("export"), TEXT("extends"), TEXT("false"), TEXT("finally"), TEXT("for"), TEXT("function"), TEXT("if"), TEXT("import"), + TEXT("in"), TEXT("instanceof"), TEXT("new"), TEXT("null"), TEXT("return"), TEXT("super"), TEXT("switch"), TEXT("this"), + TEXT("throw"), TEXT("true"), TEXT("try"), TEXT("typeof"), TEXT("var"), TEXT("void"), TEXT("while"), TEXT("with"), // future reserved words in strict mode (a .d.ts is parsed in strict mode) - TEXT("implements"), TEXT("interface"), TEXT("let"), TEXT("package"), TEXT("private"), TEXT("protected"), - TEXT("public"), TEXT("static"), TEXT("yield")}; + TEXT("implements"), TEXT("interface"), TEXT("let"), TEXT("package"), TEXT("private"), TEXT("protected"), TEXT("public"), + TEXT("static"), TEXT("yield")}; - return ReservedWords.Contains(Identifier); + // Case-sensitive match: TypeScript reserved words are lowercase, while UE type names are PascalCase + // (Class, Enum, Function, Interface, Package, ...). FString's operator== / TArray::Contains are + // case-INsensitive, which would wrongly treat those valid identifiers as reserved and escape/flag them. + return ReservedWords.ContainsByPredicate( + [&Identifier](const FString& Word) { return Identifier.Equals(Word, ESearchCase::CaseSensitive); }); } FORCEINLINE FString FilenameToTypeScriptVariableName(const FString& Filename)