c-next 0.1.69 → 0.1.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/lib/__tests__/parseCHeader.mocked.test.ts +69 -54
- package/src/lib/parseCHeader.ts +56 -23
- package/src/lib/parseWithSymbols.ts +195 -53
- package/src/transpiler/Transpiler.ts +173 -60
- package/src/transpiler/logic/analysis/FunctionCallAnalyzer.ts +240 -205
- package/src/transpiler/logic/analysis/InitializationAnalyzer.ts +1 -2
- package/src/transpiler/logic/analysis/PassByValueAnalyzer.ts +742 -0
- package/src/transpiler/logic/analysis/__tests__/FunctionCallAnalyzer.test.ts +102 -15
- package/src/transpiler/logic/analysis/__tests__/InitializationAnalyzer.test.ts +9 -9
- package/src/transpiler/logic/analysis/__tests__/runAnalyzers.test.ts +5 -5
- package/src/transpiler/{output/codegen → logic/analysis}/helpers/AssignmentTargetExtractor.ts +1 -1
- package/src/transpiler/{output/codegen → logic/analysis}/helpers/ChildStatementCollector.ts +1 -1
- package/src/transpiler/{output/codegen → logic/analysis}/helpers/StatementExpressionCollector.ts +1 -1
- package/src/transpiler/{output/codegen → logic/analysis}/helpers/__tests__/AssignmentTargetExtractor.test.ts +2 -2
- package/src/transpiler/{output/codegen → logic/analysis}/helpers/__tests__/ChildStatementCollector.test.ts +2 -2
- package/src/transpiler/{output/codegen → logic/analysis}/helpers/__tests__/StatementExpressionCollector.test.ts +2 -2
- package/src/transpiler/logic/symbols/SymbolTable.ts +676 -258
- package/src/transpiler/logic/symbols/SymbolUtils.ts +2 -2
- package/src/transpiler/logic/symbols/__tests__/SymbolTable.test.ts +290 -782
- package/src/transpiler/logic/symbols/c/__tests__/CResolver.integration.test.ts +573 -0
- package/src/transpiler/logic/symbols/c/__tests__/testHelpers.ts +20 -0
- package/src/transpiler/logic/symbols/c/collectors/EnumCollector.ts +82 -0
- package/src/transpiler/logic/symbols/c/collectors/FunctionCollector.ts +106 -0
- package/src/transpiler/logic/symbols/c/collectors/StructCollector.ts +173 -0
- package/src/transpiler/logic/symbols/c/collectors/TypedefCollector.ts +35 -0
- package/src/transpiler/logic/symbols/c/collectors/VariableCollector.ts +80 -0
- package/src/transpiler/logic/symbols/c/index.ts +333 -0
- package/src/transpiler/logic/symbols/c/utils/DeclaratorUtils.ts +269 -0
- package/src/transpiler/logic/symbols/cnext/__tests__/BitmapCollector.test.ts +50 -11
- package/src/transpiler/logic/symbols/cnext/__tests__/CNextResolver.integration.test.ts +45 -34
- package/src/transpiler/logic/symbols/cnext/__tests__/EnumCollector.test.ts +30 -13
- package/src/transpiler/logic/symbols/cnext/__tests__/FunctionCollector.test.ts +279 -64
- package/src/transpiler/logic/symbols/cnext/__tests__/RegisterCollector.test.ts +60 -13
- package/src/transpiler/logic/symbols/cnext/__tests__/ScopeCollector.test.ts +40 -37
- package/src/transpiler/logic/symbols/cnext/__tests__/StructCollector.test.ts +131 -45
- package/src/transpiler/logic/symbols/cnext/__tests__/TSymbolInfoAdapter.test.ts +223 -139
- package/src/transpiler/logic/symbols/cnext/__tests__/VariableCollector.test.ts +79 -25
- package/src/transpiler/logic/symbols/cnext/__tests__/testUtils.ts +53 -0
- package/src/transpiler/logic/symbols/cnext/adapters/TSymbolInfoAdapter.ts +83 -43
- package/src/transpiler/logic/symbols/cnext/collectors/BitmapCollector.ts +14 -13
- package/src/transpiler/logic/symbols/cnext/collectors/EnumCollector.ts +11 -10
- package/src/transpiler/logic/symbols/cnext/collectors/FunctionCollector.ts +83 -34
- package/src/transpiler/logic/symbols/cnext/collectors/RegisterCollector.ts +22 -18
- package/src/transpiler/logic/symbols/cnext/collectors/ScopeCollector.ts +53 -35
- package/src/transpiler/logic/symbols/cnext/collectors/StructCollector.ts +30 -23
- package/src/transpiler/logic/symbols/cnext/collectors/VariableCollector.ts +18 -19
- package/src/transpiler/logic/symbols/cnext/index.ts +36 -14
- package/src/transpiler/logic/symbols/cnext/types/IScopeCollectorResult.ts +2 -2
- package/src/transpiler/logic/symbols/cnext/utils/SymbolNameUtils.ts +27 -0
- package/src/transpiler/logic/symbols/cpp/__tests__/CppResolver.integration.test.ts +270 -0
- package/src/transpiler/logic/symbols/cpp/__tests__/testHelpers.ts +20 -0
- package/src/transpiler/logic/symbols/cpp/collectors/ClassCollector.ts +317 -0
- package/src/transpiler/logic/symbols/cpp/collectors/EnumCollector.ts +71 -0
- package/src/transpiler/logic/symbols/cpp/collectors/FunctionCollector.ts +155 -0
- package/src/transpiler/logic/symbols/cpp/collectors/NamespaceCollector.ts +65 -0
- package/src/transpiler/logic/symbols/cpp/collectors/TypeAliasCollector.ts +46 -0
- package/src/transpiler/logic/symbols/cpp/collectors/VariableCollector.ts +54 -0
- package/src/transpiler/logic/symbols/cpp/index.ts +366 -0
- package/src/transpiler/logic/symbols/cpp/utils/DeclaratorUtils.ts +248 -0
- package/src/transpiler/logic/symbols/shared/IExtractedParameter.ts +18 -0
- package/src/transpiler/logic/symbols/shared/ParameterExtractorUtils.ts +73 -0
- package/src/transpiler/output/codegen/CodeGenerator.ts +310 -2288
- package/src/transpiler/output/codegen/TypeRegistrationUtils.ts +4 -6
- package/src/transpiler/output/codegen/TypeResolver.ts +2 -2
- package/src/transpiler/output/codegen/TypeValidator.ts +5 -5
- package/src/transpiler/output/codegen/__tests__/CodeGenerator.test.ts +7 -1
- package/src/transpiler/output/codegen/__tests__/TypeRegistrationUtils.test.ts +36 -51
- package/src/transpiler/output/codegen/__tests__/TypeResolver.test.ts +20 -17
- package/src/transpiler/output/codegen/__tests__/TypeValidator.resolution.test.ts +3 -3
- package/src/transpiler/output/codegen/__tests__/TypeValidator.test.ts +1 -1
- package/src/transpiler/output/codegen/analysis/MemberChainAnalyzer.ts +1 -1
- package/src/transpiler/output/codegen/analysis/StringLengthCounter.ts +1 -1
- package/src/transpiler/output/codegen/analysis/__tests__/MemberChainAnalyzer.test.ts +9 -9
- package/src/transpiler/output/codegen/analysis/__tests__/StringLengthCounter.test.ts +12 -12
- package/src/transpiler/output/codegen/assignment/AssignmentClassifier.ts +13 -12
- package/src/transpiler/output/codegen/assignment/__tests__/AssignmentClassifier.test.ts +23 -17
- package/src/transpiler/output/codegen/assignment/handlers/ArrayHandlers.ts +2 -2
- package/src/transpiler/output/codegen/assignment/handlers/AssignmentHandlerUtils.ts +7 -1
- package/src/transpiler/output/codegen/assignment/handlers/BitAccessHandlers.ts +3 -3
- package/src/transpiler/output/codegen/assignment/handlers/BitmapHandlers.ts +9 -5
- package/src/transpiler/output/codegen/assignment/handlers/RegisterHandlers.ts +2 -1
- package/src/transpiler/output/codegen/assignment/handlers/SpecialHandlers.ts +4 -4
- package/src/transpiler/output/codegen/assignment/handlers/StringHandlers.ts +5 -5
- package/src/transpiler/output/codegen/assignment/handlers/__tests__/ArrayHandlers.test.ts +23 -25
- package/src/transpiler/output/codegen/assignment/handlers/__tests__/BitAccessHandlers.test.ts +20 -36
- package/src/transpiler/output/codegen/assignment/handlers/__tests__/BitmapHandlers.test.ts +18 -18
- package/src/transpiler/output/codegen/assignment/handlers/__tests__/SpecialHandlers.test.ts +42 -32
- package/src/transpiler/output/codegen/assignment/handlers/__tests__/handlerTestUtils.ts +5 -4
- package/src/transpiler/output/codegen/generators/declarationGenerators/ScopeGenerator.ts +21 -8
- package/src/transpiler/output/codegen/generators/declarationGenerators/ScopedRegisterGenerator.ts +3 -2
- package/src/transpiler/output/codegen/generators/expressions/CallExprGenerator.ts +14 -6
- package/src/transpiler/output/codegen/generators/expressions/CallExprUtils.ts +9 -3
- package/src/transpiler/output/codegen/generators/expressions/PostfixExpressionGenerator.ts +19 -16
- package/src/transpiler/output/codegen/generators/expressions/__tests__/CallExprGenerator.test.ts +24 -8
- package/src/transpiler/output/codegen/generators/expressions/__tests__/CallExprUtils.test.ts +4 -8
- package/src/transpiler/output/codegen/generators/expressions/__tests__/PostfixExpressionGenerator.test.ts +15 -2
- package/src/transpiler/output/codegen/helpers/ArgumentGenerator.ts +236 -0
- package/src/transpiler/output/codegen/helpers/ArrayInitHelper.ts +2 -1
- package/src/transpiler/output/codegen/helpers/AssignmentExpectedTypeResolver.ts +2 -2
- package/src/transpiler/output/codegen/helpers/AssignmentValidator.ts +3 -3
- package/src/transpiler/output/codegen/helpers/CppConstructorHelper.ts +3 -3
- package/src/transpiler/output/codegen/helpers/EnumAssignmentValidator.ts +1 -1
- package/src/transpiler/output/codegen/helpers/FunctionContextManager.ts +435 -0
- package/src/transpiler/output/codegen/helpers/StringDeclHelper.ts +2 -2
- package/src/transpiler/output/codegen/helpers/StringOperationsHelper.ts +203 -0
- package/src/transpiler/output/codegen/helpers/SymbolLookupHelper.ts +8 -12
- package/src/transpiler/output/codegen/helpers/TypeRegistrationEngine.ts +520 -0
- package/src/transpiler/output/codegen/helpers/VariableDeclHelper.ts +735 -0
- package/src/transpiler/output/codegen/helpers/VariableDeclarationFormatter.ts +1 -1
- package/src/transpiler/output/codegen/helpers/__tests__/ArgumentGenerator.test.ts +521 -0
- package/src/transpiler/output/codegen/helpers/__tests__/ArrayInitHelper.test.ts +1 -1
- package/src/transpiler/output/codegen/helpers/__tests__/AssignmentExpectedTypeResolver.test.ts +7 -7
- package/src/transpiler/output/codegen/helpers/__tests__/AssignmentValidator.test.ts +7 -7
- package/src/transpiler/output/codegen/helpers/__tests__/CppConstructorHelper.test.ts +4 -5
- package/src/transpiler/output/codegen/helpers/__tests__/EnumAssignmentValidator.test.ts +2 -2
- package/src/transpiler/output/codegen/helpers/__tests__/FunctionContextManager.test.ts +983 -0
- package/src/transpiler/output/codegen/helpers/__tests__/StringDeclHelper.test.ts +4 -4
- package/src/transpiler/output/codegen/helpers/__tests__/StringOperationsHelper.test.ts +269 -0
- package/src/transpiler/output/codegen/helpers/__tests__/SymbolLookupHelper.test.ts +31 -32
- package/src/transpiler/output/codegen/helpers/__tests__/TypeRegistrationEngine.test.ts +186 -0
- package/src/transpiler/output/codegen/helpers/__tests__/VariableDeclHelper.test.ts +460 -0
- package/src/transpiler/output/codegen/helpers/types/IArgumentGeneratorCallbacks.ts +32 -0
- package/src/transpiler/output/codegen/resolution/EnumTypeResolver.ts +7 -3
- package/src/transpiler/output/codegen/resolution/__tests__/EnumTypeResolver.test.ts +5 -5
- package/src/transpiler/output/codegen/types/IFunctionContextCallbacks.ts +12 -0
- package/src/transpiler/output/codegen/types/IVariableFormatInput.ts +1 -1
- package/src/transpiler/output/codegen/utils/QualifiedNameGenerator.ts +114 -0
- package/src/transpiler/output/codegen/utils/__tests__/QualifiedNameGenerator.test.ts +183 -0
- package/src/transpiler/output/headers/BaseHeaderGenerator.ts +4 -4
- package/src/transpiler/output/headers/ExternalTypeHeaderBuilder.ts +7 -7
- package/src/transpiler/output/headers/HeaderGenerator.ts +9 -7
- package/src/transpiler/output/headers/HeaderGeneratorUtils.ts +19 -20
- package/src/transpiler/output/headers/__tests__/BaseHeaderGenerator.test.ts +15 -18
- package/src/transpiler/output/headers/__tests__/CHeaderGenerator.test.ts +63 -64
- package/src/transpiler/output/headers/__tests__/CppHeaderGenerator.test.ts +36 -32
- package/src/transpiler/output/headers/__tests__/ExternalTypeHeaderBuilder.test.ts +26 -26
- package/src/transpiler/output/headers/__tests__/HeaderGenerator.test.ts +87 -59
- package/src/transpiler/output/headers/__tests__/HeaderGeneratorUtils.test.ts +57 -58
- package/src/transpiler/output/headers/adapters/HeaderSymbolAdapter.ts +222 -0
- package/src/transpiler/output/headers/adapters/__tests__/HeaderSymbolAdapter.test.ts +538 -0
- package/src/transpiler/output/headers/types/IGroupedSymbols.ts +8 -8
- package/src/transpiler/output/headers/types/IHeaderSymbol.ts +62 -0
- package/src/transpiler/state/CodeGenState.ts +109 -4
- package/src/transpiler/state/SymbolRegistry.ts +181 -0
- package/src/transpiler/{types → state}/TranspilerState.ts +1 -1
- package/src/transpiler/state/__tests__/CodeGenState.test.ts +277 -1
- package/src/transpiler/state/__tests__/SymbolRegistry.test.ts +249 -0
- package/src/transpiler/{types → state}/__tests__/TranspilerState.test.ts +1 -1
- package/src/transpiler/types/ICachedFileEntry.ts +1 -1
- package/src/transpiler/types/IConflict.ts +14 -0
- package/src/transpiler/types/ISerializedSymbol.ts +11 -0
- package/src/transpiler/types/TPrimitiveKind.ts +20 -0
- package/src/transpiler/types/TType.ts +103 -0
- package/src/transpiler/types/TVisibility.ts +6 -0
- package/src/transpiler/types/symbol-kinds/TSymbolKind.ts +10 -0
- package/src/transpiler/types/symbol-kinds/TSymbolKindC.ts +12 -0
- package/src/transpiler/types/symbol-kinds/TSymbolKindCNext.ts +16 -0
- package/src/transpiler/types/symbol-kinds/TSymbolKindCpp.ts +14 -0
- package/src/transpiler/types/symbols/IBaseSymbol.ts +31 -0
- package/src/transpiler/{logic/symbols/types → types/symbols}/IBitmapFieldInfo.ts +2 -2
- package/src/transpiler/types/symbols/IBitmapSymbol.ts +21 -0
- package/src/transpiler/{logic/symbols/types → types/symbols}/IEnumSymbol.ts +5 -6
- package/src/transpiler/types/symbols/IFieldInfo.ts +26 -0
- package/src/transpiler/types/symbols/IFunctionSymbol.ts +30 -0
- package/src/transpiler/types/symbols/IParameterInfo.ts +26 -0
- package/src/transpiler/{logic/symbols/types → types/symbols}/IRegisterMemberInfo.ts +4 -4
- package/src/transpiler/types/symbols/IRegisterSymbol.ts +18 -0
- package/src/transpiler/types/symbols/IScopeSymbol.ts +32 -0
- package/src/transpiler/{logic/symbols/types → types/symbols}/IStructFieldInfo.ts +2 -1
- package/src/transpiler/types/symbols/IStructSymbol.ts +15 -0
- package/src/transpiler/types/symbols/IVariableSymbol.ts +30 -0
- package/src/transpiler/types/symbols/SymbolGuards.ts +43 -0
- package/src/transpiler/types/symbols/TAnySymbol.ts +22 -0
- package/src/transpiler/types/symbols/TSymbol.ts +32 -0
- package/src/transpiler/types/symbols/__tests__/IBaseSymbol.test.ts +56 -0
- package/src/transpiler/types/symbols/__tests__/SymbolGuards.test.ts +57 -0
- package/src/transpiler/types/symbols/c/ICBaseSymbol.ts +28 -0
- package/src/transpiler/types/symbols/c/ICEnumMemberSymbol.ts +17 -0
- package/src/transpiler/types/symbols/c/ICEnumSymbol.ts +17 -0
- package/src/transpiler/types/symbols/c/ICFieldInfo.ts +16 -0
- package/src/transpiler/types/symbols/c/ICFunctionSymbol.ts +21 -0
- package/src/transpiler/types/symbols/c/ICParameterInfo.ts +19 -0
- package/src/transpiler/types/symbols/c/ICStructSymbol.ts +21 -0
- package/src/transpiler/types/symbols/c/ICTypedefSymbol.ts +14 -0
- package/src/transpiler/types/symbols/c/ICVariableSymbol.ts +26 -0
- package/src/transpiler/types/symbols/c/TCSymbol.ts +26 -0
- package/src/transpiler/types/symbols/cpp/ICppBaseSymbol.ts +31 -0
- package/src/transpiler/types/symbols/cpp/ICppClassSymbol.ts +15 -0
- package/src/transpiler/types/symbols/cpp/ICppEnumMemberSymbol.ts +14 -0
- package/src/transpiler/types/symbols/cpp/ICppEnumSymbol.ts +14 -0
- package/src/transpiler/types/symbols/cpp/ICppFieldInfo.ts +16 -0
- package/src/transpiler/types/symbols/cpp/ICppFunctionSymbol.ts +21 -0
- package/src/transpiler/types/symbols/cpp/ICppNamespaceSymbol.ts +11 -0
- package/src/transpiler/types/symbols/cpp/ICppParameterInfo.ts +19 -0
- package/src/transpiler/types/symbols/cpp/ICppStructSymbol.ts +16 -0
- package/src/transpiler/types/symbols/cpp/ICppTypeAliasSymbol.ts +14 -0
- package/src/transpiler/types/symbols/cpp/ICppVariableSymbol.ts +23 -0
- package/src/transpiler/types/symbols/cpp/TCppSymbol.ts +30 -0
- package/src/utils/CppNamespaceUtils.ts +3 -4
- package/src/utils/FunctionUtils.ts +92 -0
- package/src/utils/ParameterUtils.ts +55 -0
- package/src/utils/PrimitiveKindUtils.ts +33 -0
- package/src/utils/ScopeUtils.ts +105 -0
- package/src/utils/TTypeUtils.ts +159 -0
- package/src/utils/TypeResolver.ts +132 -0
- package/src/utils/__tests__/CppNamespaceUtils.test.ts +92 -99
- package/src/utils/__tests__/FunctionUtils.test.ts +284 -0
- package/src/utils/__tests__/ParameterUtils.test.ts +174 -0
- package/src/utils/__tests__/PrimitiveKindUtils.test.ts +59 -0
- package/src/utils/__tests__/ScopeUtils.test.ts +53 -0
- package/src/utils/__tests__/TTypeUtils.test.ts +245 -0
- package/src/utils/__tests__/TypeResolver.test.ts +332 -0
- package/src/utils/cache/CacheManager.ts +91 -50
- package/src/utils/cache/__tests__/CacheManager.test.ts +180 -114
- package/src/transpiler/logic/symbols/AutoConstUpdater.ts +0 -93
- package/src/transpiler/logic/symbols/CSymbolCollector.ts +0 -648
- package/src/transpiler/logic/symbols/CppSymbolCollector.ts +0 -874
- package/src/transpiler/logic/symbols/SymbolCollectorContext.ts +0 -68
- package/src/transpiler/logic/symbols/__tests__/AutoConstUpdater.test.ts +0 -418
- package/src/transpiler/logic/symbols/__tests__/CSymbolCollector.test.ts +0 -685
- package/src/transpiler/logic/symbols/__tests__/CppSymbolCollector.test.ts +0 -1146
- package/src/transpiler/logic/symbols/__tests__/SymbolCollectorContext.test.ts +0 -290
- package/src/transpiler/logic/symbols/__tests__/cTestHelpers.ts +0 -43
- package/src/transpiler/logic/symbols/__tests__/cppTestHelpers.ts +0 -40
- package/src/transpiler/logic/symbols/cnext/__tests__/TSymbolAdapter.test.ts +0 -595
- package/src/transpiler/logic/symbols/cnext/adapters/TSymbolAdapter.ts +0 -345
- package/src/transpiler/logic/symbols/types/IBaseSymbol.ts +0 -27
- package/src/transpiler/logic/symbols/types/IBitmapSymbol.ts +0 -23
- package/src/transpiler/logic/symbols/types/ICollectorContext.ts +0 -19
- package/src/transpiler/logic/symbols/types/IConflict.ts +0 -20
- package/src/transpiler/logic/symbols/types/IFieldInfo.ts +0 -18
- package/src/transpiler/logic/symbols/types/IFunctionSymbol.ts +0 -25
- package/src/transpiler/logic/symbols/types/IParameterInfo.ts +0 -24
- package/src/transpiler/logic/symbols/types/IRegisterSymbol.ts +0 -20
- package/src/transpiler/logic/symbols/types/IScopeSymbol.ts +0 -19
- package/src/transpiler/logic/symbols/types/IStructSymbol.ts +0 -16
- package/src/transpiler/logic/symbols/types/IVariableSymbol.ts +0 -30
- package/src/transpiler/logic/symbols/types/TSymbol.ts +0 -36
- package/src/transpiler/logic/symbols/types/__tests__/SymbolGuards.test.ts +0 -244
- package/src/transpiler/logic/symbols/types/typeGuards.ts +0 -44
- package/src/utils/types/ESymbolKind.ts +0 -19
- package/src/utils/types/ISymbol.ts +0 -64
- /package/src/transpiler/{types → constants}/BITMAP_BACKING_TYPE.ts +0 -0
- /package/src/transpiler/{types → constants}/BITMAP_SIZE.ts +0 -0
- /package/src/transpiler/{output/codegen → logic/analysis}/helpers/TransitiveModificationPropagator.ts +0 -0
- /package/src/transpiler/{output/codegen → logic/analysis}/helpers/__tests__/TransitiveModificationPropagator.test.ts +0 -0
|
@@ -25,13 +25,16 @@ import ExternalTypeHeaderBuilder from "./output/headers/ExternalTypeHeaderBuilde
|
|
|
25
25
|
import ICodeGenSymbols from "./types/ICodeGenSymbols";
|
|
26
26
|
import IncludeExtractor from "./logic/IncludeExtractor";
|
|
27
27
|
import SymbolTable from "./logic/symbols/SymbolTable";
|
|
28
|
-
import
|
|
29
|
-
import
|
|
28
|
+
import ISerializedSymbol from "./types/ISerializedSymbol";
|
|
29
|
+
import ESourceLanguage from "../utils/types/ESourceLanguage";
|
|
30
30
|
import CNextResolver from "./logic/symbols/cnext";
|
|
31
|
-
import
|
|
31
|
+
import SymbolRegistry from "./state/SymbolRegistry";
|
|
32
32
|
import TSymbolInfoAdapter from "./logic/symbols/cnext/adapters/TSymbolInfoAdapter";
|
|
33
|
-
import
|
|
34
|
-
import
|
|
33
|
+
import CResolver from "./logic/symbols/c";
|
|
34
|
+
import CppResolver from "./logic/symbols/cpp";
|
|
35
|
+
import HeaderSymbolAdapter from "./output/headers/adapters/HeaderSymbolAdapter";
|
|
36
|
+
import IHeaderSymbol from "./output/headers/types/IHeaderSymbol";
|
|
37
|
+
import TSymbol from "./types/symbols/TSymbol";
|
|
35
38
|
import Preprocessor from "./logic/preprocessor/Preprocessor";
|
|
36
39
|
|
|
37
40
|
import FileDiscovery from "./data/FileDiscovery";
|
|
@@ -50,13 +53,12 @@ import IFileResult from "./types/IFileResult";
|
|
|
50
53
|
import IPipelineFile from "./types/IPipelineFile";
|
|
51
54
|
import IPipelineInput from "./types/IPipelineInput";
|
|
52
55
|
import ITranspileError from "../lib/types/ITranspileError";
|
|
53
|
-
import TranspilerState from "./
|
|
56
|
+
import TranspilerState from "./state/TranspilerState";
|
|
54
57
|
import runAnalyzers from "./logic/analysis/runAnalyzers";
|
|
55
58
|
import ModificationAnalyzer from "./logic/analysis/ModificationAnalyzer";
|
|
56
59
|
import CacheManager from "../utils/cache/CacheManager";
|
|
57
60
|
import MapUtils from "../utils/MapUtils";
|
|
58
61
|
import detectCppSyntax from "./logic/detectCppSyntax";
|
|
59
|
-
import AutoConstUpdater from "./logic/symbols/AutoConstUpdater";
|
|
60
62
|
import TransitiveEnumCollector from "./logic/symbols/TransitiveEnumCollector";
|
|
61
63
|
|
|
62
64
|
/**
|
|
@@ -333,13 +335,11 @@ class Transpiler {
|
|
|
333
335
|
}
|
|
334
336
|
|
|
335
337
|
try {
|
|
336
|
-
// ADR-055: Use composable collectors via CNextResolver
|
|
338
|
+
// ADR-055 Phase 7: Use composable collectors via CNextResolver
|
|
337
339
|
const tSymbols = CNextResolver.resolve(tree, file.path);
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
);
|
|
342
|
-
CodeGenState.symbolTable.addSymbols(iSymbols);
|
|
340
|
+
|
|
341
|
+
// ADR-055 Phase 7: Store TSymbol directly in SymbolTable (no ISymbol conversion)
|
|
342
|
+
CodeGenState.symbolTable.addTSymbols(tSymbols);
|
|
343
343
|
|
|
344
344
|
// Issue #465: Store ICodeGenSymbols for external enum resolution in stage 5
|
|
345
345
|
const symbolInfo = TSymbolInfoAdapter.convert(tSymbols);
|
|
@@ -450,16 +450,13 @@ class Transpiler {
|
|
|
450
450
|
this._accumulateFileModifications();
|
|
451
451
|
}
|
|
452
452
|
|
|
453
|
-
//
|
|
454
|
-
const
|
|
455
|
-
|
|
456
|
-
const knownEnums =
|
|
457
|
-
this.state.getSymbolInfo(sourcePath)?.knownEnums ?? new Set<string>();
|
|
458
|
-
AutoConstUpdater.update(symbols, unmodifiedParams, knownEnums);
|
|
453
|
+
// ADR-055 Phase 7: Get TSymbols for header generation (auto-const applied during conversion)
|
|
454
|
+
const fileSymbols =
|
|
455
|
+
CodeGenState.symbolTable.getTSymbolsByFile(sourcePath);
|
|
459
456
|
|
|
460
457
|
// Generate header content
|
|
461
458
|
const headerCode = this.generateHeaderContent(
|
|
462
|
-
|
|
459
|
+
fileSymbols,
|
|
463
460
|
sourcePath,
|
|
464
461
|
this.cppDetected,
|
|
465
462
|
userIncludes,
|
|
@@ -621,6 +618,8 @@ class Transpiler {
|
|
|
621
618
|
this.state.reset();
|
|
622
619
|
// Issue #634: Reset symbol table for new run
|
|
623
620
|
CodeGenState.symbolTable.clear();
|
|
621
|
+
// Reset SymbolRegistry for new run (new IFunctionSymbol type system)
|
|
622
|
+
SymbolRegistry.reset();
|
|
624
623
|
}
|
|
625
624
|
|
|
626
625
|
/**
|
|
@@ -1057,7 +1056,8 @@ class Transpiler {
|
|
|
1057
1056
|
}
|
|
1058
1057
|
|
|
1059
1058
|
// Restore symbols, struct fields, needsStructKeyword, and enumBitWidth from cache
|
|
1060
|
-
|
|
1059
|
+
// ADR-055 Phase 7: Cache returns ISerializedSymbol[], converted to typed symbols
|
|
1060
|
+
this.restoreCachedSymbols(cached.symbols, file);
|
|
1061
1061
|
CodeGenState.symbolTable.restoreStructFields(cached.structFields);
|
|
1062
1062
|
CodeGenState.symbolTable.restoreNeedsStructKeyword(
|
|
1063
1063
|
cached.needsStructKeyword,
|
|
@@ -1070,6 +1070,78 @@ class Transpiler {
|
|
|
1070
1070
|
return true;
|
|
1071
1071
|
}
|
|
1072
1072
|
|
|
1073
|
+
/**
|
|
1074
|
+
* Restore cached symbols to the symbol table.
|
|
1075
|
+
* ADR-055 Phase 7: Converts ISerializedSymbol[] from cache to typed symbols.
|
|
1076
|
+
*/
|
|
1077
|
+
private restoreCachedSymbols(
|
|
1078
|
+
symbols: ISerializedSymbol[],
|
|
1079
|
+
_file: IDiscoveredFile,
|
|
1080
|
+
): void {
|
|
1081
|
+
for (const symbol of symbols) {
|
|
1082
|
+
// Determine which storage to use based on source language
|
|
1083
|
+
if (symbol.sourceLanguage === ESourceLanguage.CNext) {
|
|
1084
|
+
// C-Next symbols are never cached (they use TSymbol format).
|
|
1085
|
+
// If we see one here, it indicates a cache format issue - skip silently
|
|
1086
|
+
// since C-Next symbols are always re-parsed from source anyway.
|
|
1087
|
+
continue;
|
|
1088
|
+
} else if (symbol.sourceLanguage === ESourceLanguage.C) {
|
|
1089
|
+
// Convert ISymbol to TCSymbol (simplified conversion)
|
|
1090
|
+
CodeGenState.symbolTable.addCSymbol({
|
|
1091
|
+
kind: symbol.kind as
|
|
1092
|
+
| "struct"
|
|
1093
|
+
| "enum"
|
|
1094
|
+
| "function"
|
|
1095
|
+
| "variable"
|
|
1096
|
+
| "enum_member"
|
|
1097
|
+
| "typedef",
|
|
1098
|
+
name: symbol.name,
|
|
1099
|
+
sourceFile: symbol.sourceFile,
|
|
1100
|
+
sourceLine: symbol.sourceLine,
|
|
1101
|
+
sourceLanguage: ESourceLanguage.C,
|
|
1102
|
+
type: symbol.type,
|
|
1103
|
+
isExported: symbol.isExported ?? true,
|
|
1104
|
+
isDeclaration: symbol.isDeclaration,
|
|
1105
|
+
parameters: symbol.parameters?.map((p) => ({
|
|
1106
|
+
name: p.name,
|
|
1107
|
+
type: p.type,
|
|
1108
|
+
isArray: p.isArray,
|
|
1109
|
+
})),
|
|
1110
|
+
arrayDimensions: symbol.arrayDimensions?.map(String),
|
|
1111
|
+
members: undefined,
|
|
1112
|
+
isUnion: false,
|
|
1113
|
+
} as import("./types/symbols/c/TCSymbol").default);
|
|
1114
|
+
} else if (symbol.sourceLanguage === ESourceLanguage.Cpp) {
|
|
1115
|
+
// Convert ISymbol to TCppSymbol (simplified conversion)
|
|
1116
|
+
CodeGenState.symbolTable.addCppSymbol({
|
|
1117
|
+
kind: symbol.kind as
|
|
1118
|
+
| "class"
|
|
1119
|
+
| "struct"
|
|
1120
|
+
| "namespace"
|
|
1121
|
+
| "enum"
|
|
1122
|
+
| "function"
|
|
1123
|
+
| "variable"
|
|
1124
|
+
| "enum_member"
|
|
1125
|
+
| "type_alias",
|
|
1126
|
+
name: symbol.name,
|
|
1127
|
+
sourceFile: symbol.sourceFile,
|
|
1128
|
+
sourceLine: symbol.sourceLine,
|
|
1129
|
+
sourceLanguage: ESourceLanguage.Cpp,
|
|
1130
|
+
type: symbol.type,
|
|
1131
|
+
isExported: symbol.isExported ?? true,
|
|
1132
|
+
isDeclaration: symbol.isDeclaration,
|
|
1133
|
+
parent: symbol.parent,
|
|
1134
|
+
parameters: symbol.parameters?.map((p) => ({
|
|
1135
|
+
name: p.name,
|
|
1136
|
+
type: p.type,
|
|
1137
|
+
isArray: p.isArray,
|
|
1138
|
+
})),
|
|
1139
|
+
arrayDimensions: symbol.arrayDimensions?.map(String),
|
|
1140
|
+
} as import("./types/symbols/cpp/TCppSymbol").default);
|
|
1141
|
+
}
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1144
|
+
|
|
1073
1145
|
/**
|
|
1074
1146
|
* Detect C++ mode based on file type and content.
|
|
1075
1147
|
* SonarCloud S3776: Extracted from doCollectHeaderSymbols().
|
|
@@ -1130,33 +1202,36 @@ class Transpiler {
|
|
|
1130
1202
|
|
|
1131
1203
|
/**
|
|
1132
1204
|
* Issue #208: Parse a pure C header (no C++ syntax detected)
|
|
1205
|
+
* Uses CResolver for symbol collection
|
|
1206
|
+
* ADR-055 Phase 7: Direct TCSymbol storage (no adapter conversion)
|
|
1133
1207
|
*/
|
|
1134
1208
|
private parsePureCHeader(content: string, filePath: string): void {
|
|
1135
1209
|
const { tree } = HeaderParser.parseC(content);
|
|
1136
1210
|
if (tree) {
|
|
1137
|
-
const
|
|
1211
|
+
const result = CResolver.resolve(
|
|
1212
|
+
tree,
|
|
1138
1213
|
filePath,
|
|
1139
1214
|
CodeGenState.symbolTable,
|
|
1140
1215
|
);
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
CodeGenState.symbolTable.addSymbols(symbols);
|
|
1144
|
-
}
|
|
1216
|
+
// ADR-055 Phase 7: Store TCSymbol directly
|
|
1217
|
+
CodeGenState.symbolTable.addCSymbols(result.symbols);
|
|
1145
1218
|
}
|
|
1146
1219
|
}
|
|
1147
1220
|
|
|
1148
1221
|
/**
|
|
1149
|
-
* Parse a C++ header
|
|
1222
|
+
* Parse a C++ header using CppResolver
|
|
1223
|
+
* ADR-055 Phase 7: Direct TCppSymbol storage (no adapter conversion)
|
|
1150
1224
|
*/
|
|
1151
1225
|
private parseCppHeader(content: string, filePath: string): void {
|
|
1152
1226
|
const { tree } = HeaderParser.parseCpp(content);
|
|
1153
1227
|
if (tree) {
|
|
1154
|
-
const
|
|
1228
|
+
const result = CppResolver.resolve(
|
|
1229
|
+
tree,
|
|
1155
1230
|
filePath,
|
|
1156
1231
|
CodeGenState.symbolTable,
|
|
1157
1232
|
);
|
|
1158
|
-
|
|
1159
|
-
CodeGenState.symbolTable.
|
|
1233
|
+
// ADR-055 Phase 7: Store TCppSymbol directly
|
|
1234
|
+
CodeGenState.symbolTable.addCppSymbols(result.symbols);
|
|
1160
1235
|
}
|
|
1161
1236
|
}
|
|
1162
1237
|
|
|
@@ -1166,10 +1241,11 @@ class Transpiler {
|
|
|
1166
1241
|
|
|
1167
1242
|
/**
|
|
1168
1243
|
* Stage 6: Generate header file for a C-Next file
|
|
1244
|
+
* ADR-055 Phase 7: Uses TSymbol directly, converts to IHeaderSymbol for generation.
|
|
1169
1245
|
*/
|
|
1170
1246
|
private generateHeader(file: IDiscoveredFile): string | null {
|
|
1171
|
-
const
|
|
1172
|
-
const exportedSymbols =
|
|
1247
|
+
const tSymbols = CodeGenState.symbolTable.getTSymbolsByFile(file.path);
|
|
1248
|
+
const exportedSymbols = tSymbols.filter((s) => s.isExported);
|
|
1173
1249
|
|
|
1174
1250
|
if (exportedSymbols.length === 0) {
|
|
1175
1251
|
return null;
|
|
@@ -1207,8 +1283,12 @@ class Transpiler {
|
|
|
1207
1283
|
? { ...typeInput, symbolTable: CodeGenState.symbolTable }
|
|
1208
1284
|
: undefined;
|
|
1209
1285
|
|
|
1286
|
+
// ADR-055 Phase 7: Convert TSymbol to IHeaderSymbol
|
|
1287
|
+
// Note: In multi-file run() path, auto-const is already applied during transpilation
|
|
1288
|
+
const headerSymbols = HeaderSymbolAdapter.fromTSymbols(exportedSymbols);
|
|
1289
|
+
|
|
1210
1290
|
const headerContent = this.headerGenerator.generate(
|
|
1211
|
-
|
|
1291
|
+
headerSymbols,
|
|
1212
1292
|
headerName,
|
|
1213
1293
|
{
|
|
1214
1294
|
exportedOnly: true,
|
|
@@ -1270,50 +1350,35 @@ class Transpiler {
|
|
|
1270
1350
|
/**
|
|
1271
1351
|
* Generate header content for exported symbols.
|
|
1272
1352
|
* Issue #591: Extracted from transpileSource() for reduced complexity.
|
|
1353
|
+
* ADR-055 Phase 7: Works with TSymbol[], converts to IHeaderSymbol for generation.
|
|
1273
1354
|
*/
|
|
1274
1355
|
private generateHeaderContent(
|
|
1275
|
-
|
|
1356
|
+
tSymbols: TSymbol[],
|
|
1276
1357
|
sourcePath: string,
|
|
1277
1358
|
cppMode: boolean,
|
|
1278
1359
|
userIncludes: string[],
|
|
1279
1360
|
passByValueParams: Map<string, Set<string>>,
|
|
1280
1361
|
symbolInfo: ICodeGenSymbols,
|
|
1281
1362
|
): string | undefined {
|
|
1282
|
-
const exportedSymbols =
|
|
1283
|
-
(s: { isExported?: boolean }) => s.isExported,
|
|
1284
|
-
);
|
|
1363
|
+
const exportedSymbols = tSymbols.filter((s) => s.isExported);
|
|
1285
1364
|
|
|
1286
1365
|
if (exportedSymbols.length === 0) {
|
|
1287
1366
|
return undefined;
|
|
1288
1367
|
}
|
|
1289
1368
|
|
|
1369
|
+
// Convert to IHeaderSymbol with auto-const info
|
|
1370
|
+
const unmodifiedParams = this.codeGenerator.getFunctionUnmodifiedParams();
|
|
1371
|
+
const headerSymbols = this.convertToHeaderSymbols(
|
|
1372
|
+
exportedSymbols,
|
|
1373
|
+
unmodifiedParams,
|
|
1374
|
+
symbolInfo.knownEnums,
|
|
1375
|
+
);
|
|
1376
|
+
|
|
1290
1377
|
const headerName = basename(sourcePath).replace(/\.cnx$|\.cnext$/, ".h");
|
|
1291
1378
|
|
|
1292
1379
|
// Get type input from CodeGenState (for struct/enum definitions)
|
|
1293
1380
|
const typeInput = CodeGenState.symbols;
|
|
1294
1381
|
|
|
1295
|
-
// Update auto-const info on symbol parameters
|
|
1296
|
-
const unmodifiedParams = this.codeGenerator.getFunctionUnmodifiedParams();
|
|
1297
|
-
for (const symbol of symbols) {
|
|
1298
|
-
if (symbol.kind !== ESymbolKind.Function || !symbol.parameters) {
|
|
1299
|
-
continue;
|
|
1300
|
-
}
|
|
1301
|
-
const unmodified = unmodifiedParams.get(symbol.name);
|
|
1302
|
-
if (!unmodified) continue;
|
|
1303
|
-
|
|
1304
|
-
for (const param of symbol.parameters) {
|
|
1305
|
-
const isPointerParam =
|
|
1306
|
-
!param.isConst &&
|
|
1307
|
-
!param.isArray &&
|
|
1308
|
-
param.type !== "f32" &&
|
|
1309
|
-
param.type !== "f64" &&
|
|
1310
|
-
param.type !== "ISR";
|
|
1311
|
-
if (isPointerParam && unmodified.has(param.name)) {
|
|
1312
|
-
param.isAutoConst = true;
|
|
1313
|
-
}
|
|
1314
|
-
}
|
|
1315
|
-
}
|
|
1316
|
-
|
|
1317
1382
|
// Issue #497: Build mapping from external types to their C header includes
|
|
1318
1383
|
const externalTypeHeaders = ExternalTypeHeaderBuilder.build(
|
|
1319
1384
|
this.state.getAllHeaderDirectives(),
|
|
@@ -1327,7 +1392,7 @@ class Transpiler {
|
|
|
1327
1392
|
|
|
1328
1393
|
// Issue #478: Pass all known enums for cross-file type handling
|
|
1329
1394
|
return this.headerGenerator.generate(
|
|
1330
|
-
|
|
1395
|
+
headerSymbols,
|
|
1331
1396
|
headerName,
|
|
1332
1397
|
{
|
|
1333
1398
|
exportedOnly: true,
|
|
@@ -1341,6 +1406,54 @@ class Transpiler {
|
|
|
1341
1406
|
);
|
|
1342
1407
|
}
|
|
1343
1408
|
|
|
1409
|
+
/**
|
|
1410
|
+
* Convert TSymbols to IHeaderSymbols with auto-const information applied.
|
|
1411
|
+
* ADR-055 Phase 7: Replaces mutation-based auto-const updating.
|
|
1412
|
+
*/
|
|
1413
|
+
private convertToHeaderSymbols(
|
|
1414
|
+
symbols: TSymbol[],
|
|
1415
|
+
unmodifiedParams: ReadonlyMap<string, ReadonlySet<string>>,
|
|
1416
|
+
knownEnums: ReadonlySet<string>,
|
|
1417
|
+
): IHeaderSymbol[] {
|
|
1418
|
+
return symbols.map((symbol) => {
|
|
1419
|
+
const headerSymbol = HeaderSymbolAdapter.fromTSymbol(symbol);
|
|
1420
|
+
|
|
1421
|
+
// Apply auto-const to function parameters
|
|
1422
|
+
if (
|
|
1423
|
+
symbol.kind === "function" &&
|
|
1424
|
+
headerSymbol.parameters &&
|
|
1425
|
+
headerSymbol.parameters.length > 0
|
|
1426
|
+
) {
|
|
1427
|
+
const unmodified = unmodifiedParams.get(headerSymbol.name);
|
|
1428
|
+
if (unmodified) {
|
|
1429
|
+
// Create a mutable copy of parameters with auto-const applied
|
|
1430
|
+
const updatedParams = headerSymbol.parameters.map((param) => {
|
|
1431
|
+
const isPointerParam =
|
|
1432
|
+
!param.isConst &&
|
|
1433
|
+
!param.isArray &&
|
|
1434
|
+
param.type !== "f32" &&
|
|
1435
|
+
param.type !== "f64" &&
|
|
1436
|
+
param.type !== "ISR" &&
|
|
1437
|
+
!knownEnums.has(param.type ?? "");
|
|
1438
|
+
const isArrayParam = param.isArray && !param.isConst;
|
|
1439
|
+
|
|
1440
|
+
if (
|
|
1441
|
+
(isPointerParam || isArrayParam) &&
|
|
1442
|
+
unmodified.has(param.name)
|
|
1443
|
+
) {
|
|
1444
|
+
return { ...param, isAutoConst: true };
|
|
1445
|
+
}
|
|
1446
|
+
return param;
|
|
1447
|
+
});
|
|
1448
|
+
|
|
1449
|
+
return { ...headerSymbol, parameters: updatedParams };
|
|
1450
|
+
}
|
|
1451
|
+
}
|
|
1452
|
+
|
|
1453
|
+
return headerSymbol;
|
|
1454
|
+
});
|
|
1455
|
+
}
|
|
1456
|
+
|
|
1344
1457
|
// ===========================================================================
|
|
1345
1458
|
// Result Builder Helpers
|
|
1346
1459
|
// ===========================================================================
|