c-next 0.1.70 → 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.
Files changed (204) hide show
  1. package/package.json +1 -1
  2. package/src/lib/__tests__/parseCHeader.mocked.test.ts +69 -54
  3. package/src/lib/parseCHeader.ts +56 -23
  4. package/src/lib/parseWithSymbols.ts +195 -53
  5. package/src/transpiler/Transpiler.ts +173 -60
  6. package/src/transpiler/logic/analysis/FunctionCallAnalyzer.ts +1 -2
  7. package/src/transpiler/logic/analysis/InitializationAnalyzer.ts +1 -2
  8. package/src/transpiler/logic/analysis/PassByValueAnalyzer.ts +51 -2
  9. package/src/transpiler/logic/analysis/__tests__/FunctionCallAnalyzer.test.ts +18 -12
  10. package/src/transpiler/logic/analysis/__tests__/InitializationAnalyzer.test.ts +9 -9
  11. package/src/transpiler/logic/analysis/__tests__/runAnalyzers.test.ts +5 -5
  12. package/src/transpiler/logic/symbols/SymbolTable.ts +676 -258
  13. package/src/transpiler/logic/symbols/SymbolUtils.ts +2 -2
  14. package/src/transpiler/logic/symbols/__tests__/SymbolTable.test.ts +290 -782
  15. package/src/transpiler/logic/symbols/c/__tests__/CResolver.integration.test.ts +573 -0
  16. package/src/transpiler/logic/symbols/c/__tests__/testHelpers.ts +20 -0
  17. package/src/transpiler/logic/symbols/c/collectors/EnumCollector.ts +82 -0
  18. package/src/transpiler/logic/symbols/c/collectors/FunctionCollector.ts +106 -0
  19. package/src/transpiler/logic/symbols/c/collectors/StructCollector.ts +173 -0
  20. package/src/transpiler/logic/symbols/c/collectors/TypedefCollector.ts +35 -0
  21. package/src/transpiler/logic/symbols/c/collectors/VariableCollector.ts +80 -0
  22. package/src/transpiler/logic/symbols/c/index.ts +333 -0
  23. package/src/transpiler/logic/symbols/c/utils/DeclaratorUtils.ts +269 -0
  24. package/src/transpiler/logic/symbols/cnext/__tests__/BitmapCollector.test.ts +50 -11
  25. package/src/transpiler/logic/symbols/cnext/__tests__/CNextResolver.integration.test.ts +45 -34
  26. package/src/transpiler/logic/symbols/cnext/__tests__/EnumCollector.test.ts +30 -13
  27. package/src/transpiler/logic/symbols/cnext/__tests__/FunctionCollector.test.ts +279 -64
  28. package/src/transpiler/logic/symbols/cnext/__tests__/RegisterCollector.test.ts +60 -13
  29. package/src/transpiler/logic/symbols/cnext/__tests__/ScopeCollector.test.ts +40 -37
  30. package/src/transpiler/logic/symbols/cnext/__tests__/StructCollector.test.ts +131 -45
  31. package/src/transpiler/logic/symbols/cnext/__tests__/TSymbolInfoAdapter.test.ts +223 -139
  32. package/src/transpiler/logic/symbols/cnext/__tests__/VariableCollector.test.ts +79 -25
  33. package/src/transpiler/logic/symbols/cnext/__tests__/testUtils.ts +53 -0
  34. package/src/transpiler/logic/symbols/cnext/adapters/TSymbolInfoAdapter.ts +83 -43
  35. package/src/transpiler/logic/symbols/cnext/collectors/BitmapCollector.ts +14 -13
  36. package/src/transpiler/logic/symbols/cnext/collectors/EnumCollector.ts +11 -10
  37. package/src/transpiler/logic/symbols/cnext/collectors/FunctionCollector.ts +83 -34
  38. package/src/transpiler/logic/symbols/cnext/collectors/RegisterCollector.ts +22 -18
  39. package/src/transpiler/logic/symbols/cnext/collectors/ScopeCollector.ts +53 -35
  40. package/src/transpiler/logic/symbols/cnext/collectors/StructCollector.ts +30 -23
  41. package/src/transpiler/logic/symbols/cnext/collectors/VariableCollector.ts +18 -19
  42. package/src/transpiler/logic/symbols/cnext/index.ts +36 -14
  43. package/src/transpiler/logic/symbols/cnext/types/IScopeCollectorResult.ts +2 -2
  44. package/src/transpiler/logic/symbols/cnext/utils/SymbolNameUtils.ts +27 -0
  45. package/src/transpiler/logic/symbols/cpp/__tests__/CppResolver.integration.test.ts +270 -0
  46. package/src/transpiler/logic/symbols/cpp/__tests__/testHelpers.ts +20 -0
  47. package/src/transpiler/logic/symbols/cpp/collectors/ClassCollector.ts +317 -0
  48. package/src/transpiler/logic/symbols/cpp/collectors/EnumCollector.ts +71 -0
  49. package/src/transpiler/logic/symbols/cpp/collectors/FunctionCollector.ts +155 -0
  50. package/src/transpiler/logic/symbols/cpp/collectors/NamespaceCollector.ts +65 -0
  51. package/src/transpiler/logic/symbols/cpp/collectors/TypeAliasCollector.ts +46 -0
  52. package/src/transpiler/logic/symbols/cpp/collectors/VariableCollector.ts +54 -0
  53. package/src/transpiler/logic/symbols/cpp/index.ts +366 -0
  54. package/src/transpiler/logic/symbols/cpp/utils/DeclaratorUtils.ts +248 -0
  55. package/src/transpiler/logic/symbols/shared/IExtractedParameter.ts +18 -0
  56. package/src/transpiler/logic/symbols/shared/ParameterExtractorUtils.ts +73 -0
  57. package/src/transpiler/output/codegen/CodeGenerator.ts +268 -1674
  58. package/src/transpiler/output/codegen/__tests__/CodeGenerator.test.ts +7 -1
  59. package/src/transpiler/output/codegen/assignment/AssignmentClassifier.ts +2 -1
  60. package/src/transpiler/output/codegen/assignment/handlers/AssignmentHandlerUtils.ts +7 -1
  61. package/src/transpiler/output/codegen/assignment/handlers/BitmapHandlers.ts +6 -2
  62. package/src/transpiler/output/codegen/assignment/handlers/RegisterHandlers.ts +2 -1
  63. package/src/transpiler/output/codegen/generators/declarationGenerators/ScopeGenerator.ts +21 -8
  64. package/src/transpiler/output/codegen/generators/declarationGenerators/ScopedRegisterGenerator.ts +3 -2
  65. package/src/transpiler/output/codegen/generators/expressions/CallExprUtils.ts +9 -3
  66. package/src/transpiler/output/codegen/generators/expressions/__tests__/CallExprGenerator.test.ts +3 -4
  67. package/src/transpiler/output/codegen/generators/expressions/__tests__/CallExprUtils.test.ts +4 -8
  68. package/src/transpiler/output/codegen/helpers/ArgumentGenerator.ts +236 -0
  69. package/src/transpiler/output/codegen/helpers/CppConstructorHelper.ts +3 -3
  70. package/src/transpiler/output/codegen/helpers/FunctionContextManager.ts +435 -0
  71. package/src/transpiler/output/codegen/helpers/StringOperationsHelper.ts +203 -0
  72. package/src/transpiler/output/codegen/helpers/SymbolLookupHelper.ts +8 -12
  73. package/src/transpiler/output/codegen/helpers/TypeRegistrationEngine.ts +520 -0
  74. package/src/transpiler/output/codegen/helpers/VariableDeclHelper.ts +735 -0
  75. package/src/transpiler/output/codegen/helpers/VariableDeclarationFormatter.ts +1 -1
  76. package/src/transpiler/output/codegen/helpers/__tests__/ArgumentGenerator.test.ts +521 -0
  77. package/src/transpiler/output/codegen/helpers/__tests__/CppConstructorHelper.test.ts +4 -5
  78. package/src/transpiler/output/codegen/helpers/__tests__/FunctionContextManager.test.ts +983 -0
  79. package/src/transpiler/output/codegen/helpers/__tests__/StringOperationsHelper.test.ts +269 -0
  80. package/src/transpiler/output/codegen/helpers/__tests__/SymbolLookupHelper.test.ts +31 -32
  81. package/src/transpiler/output/codegen/helpers/__tests__/TypeRegistrationEngine.test.ts +186 -0
  82. package/src/transpiler/output/codegen/helpers/__tests__/VariableDeclHelper.test.ts +460 -0
  83. package/src/transpiler/output/codegen/helpers/types/IArgumentGeneratorCallbacks.ts +32 -0
  84. package/src/transpiler/output/codegen/resolution/EnumTypeResolver.ts +5 -1
  85. package/src/transpiler/output/codegen/types/IFunctionContextCallbacks.ts +12 -0
  86. package/src/transpiler/output/codegen/types/IVariableFormatInput.ts +1 -1
  87. package/src/transpiler/output/codegen/utils/QualifiedNameGenerator.ts +114 -0
  88. package/src/transpiler/output/codegen/utils/__tests__/QualifiedNameGenerator.test.ts +183 -0
  89. package/src/transpiler/output/headers/BaseHeaderGenerator.ts +4 -4
  90. package/src/transpiler/output/headers/ExternalTypeHeaderBuilder.ts +7 -7
  91. package/src/transpiler/output/headers/HeaderGenerator.ts +9 -7
  92. package/src/transpiler/output/headers/HeaderGeneratorUtils.ts +19 -20
  93. package/src/transpiler/output/headers/__tests__/BaseHeaderGenerator.test.ts +15 -18
  94. package/src/transpiler/output/headers/__tests__/CHeaderGenerator.test.ts +63 -64
  95. package/src/transpiler/output/headers/__tests__/CppHeaderGenerator.test.ts +36 -32
  96. package/src/transpiler/output/headers/__tests__/ExternalTypeHeaderBuilder.test.ts +26 -26
  97. package/src/transpiler/output/headers/__tests__/HeaderGenerator.test.ts +87 -59
  98. package/src/transpiler/output/headers/__tests__/HeaderGeneratorUtils.test.ts +57 -58
  99. package/src/transpiler/output/headers/adapters/HeaderSymbolAdapter.ts +222 -0
  100. package/src/transpiler/output/headers/adapters/__tests__/HeaderSymbolAdapter.test.ts +538 -0
  101. package/src/transpiler/output/headers/types/IGroupedSymbols.ts +8 -8
  102. package/src/transpiler/output/headers/types/IHeaderSymbol.ts +62 -0
  103. package/src/transpiler/state/CodeGenState.ts +20 -33
  104. package/src/transpiler/state/SymbolRegistry.ts +181 -0
  105. package/src/transpiler/{types → state}/TranspilerState.ts +1 -1
  106. package/src/transpiler/state/__tests__/CodeGenState.test.ts +67 -59
  107. package/src/transpiler/state/__tests__/SymbolRegistry.test.ts +249 -0
  108. package/src/transpiler/{types → state}/__tests__/TranspilerState.test.ts +1 -1
  109. package/src/transpiler/types/ICachedFileEntry.ts +1 -1
  110. package/src/transpiler/types/IConflict.ts +14 -0
  111. package/src/transpiler/types/ISerializedSymbol.ts +11 -0
  112. package/src/transpiler/types/TPrimitiveKind.ts +20 -0
  113. package/src/transpiler/types/TType.ts +103 -0
  114. package/src/transpiler/types/TVisibility.ts +6 -0
  115. package/src/transpiler/types/symbol-kinds/TSymbolKind.ts +10 -0
  116. package/src/transpiler/types/symbol-kinds/TSymbolKindC.ts +12 -0
  117. package/src/transpiler/types/symbol-kinds/TSymbolKindCNext.ts +16 -0
  118. package/src/transpiler/types/symbol-kinds/TSymbolKindCpp.ts +14 -0
  119. package/src/transpiler/types/symbols/IBaseSymbol.ts +31 -0
  120. package/src/transpiler/{logic/symbols/types → types/symbols}/IBitmapFieldInfo.ts +2 -2
  121. package/src/transpiler/types/symbols/IBitmapSymbol.ts +21 -0
  122. package/src/transpiler/{logic/symbols/types → types/symbols}/IEnumSymbol.ts +5 -6
  123. package/src/transpiler/types/symbols/IFieldInfo.ts +26 -0
  124. package/src/transpiler/types/symbols/IFunctionSymbol.ts +30 -0
  125. package/src/transpiler/types/symbols/IParameterInfo.ts +26 -0
  126. package/src/transpiler/{logic/symbols/types → types/symbols}/IRegisterMemberInfo.ts +4 -4
  127. package/src/transpiler/types/symbols/IRegisterSymbol.ts +18 -0
  128. package/src/transpiler/types/symbols/IScopeSymbol.ts +32 -0
  129. package/src/transpiler/{logic/symbols/types → types/symbols}/IStructFieldInfo.ts +2 -1
  130. package/src/transpiler/types/symbols/IStructSymbol.ts +15 -0
  131. package/src/transpiler/types/symbols/IVariableSymbol.ts +30 -0
  132. package/src/transpiler/types/symbols/SymbolGuards.ts +43 -0
  133. package/src/transpiler/types/symbols/TAnySymbol.ts +22 -0
  134. package/src/transpiler/types/symbols/TSymbol.ts +32 -0
  135. package/src/transpiler/types/symbols/__tests__/IBaseSymbol.test.ts +56 -0
  136. package/src/transpiler/types/symbols/__tests__/SymbolGuards.test.ts +57 -0
  137. package/src/transpiler/types/symbols/c/ICBaseSymbol.ts +28 -0
  138. package/src/transpiler/types/symbols/c/ICEnumMemberSymbol.ts +17 -0
  139. package/src/transpiler/types/symbols/c/ICEnumSymbol.ts +17 -0
  140. package/src/transpiler/types/symbols/c/ICFieldInfo.ts +16 -0
  141. package/src/transpiler/types/symbols/c/ICFunctionSymbol.ts +21 -0
  142. package/src/transpiler/types/symbols/c/ICParameterInfo.ts +19 -0
  143. package/src/transpiler/types/symbols/c/ICStructSymbol.ts +21 -0
  144. package/src/transpiler/types/symbols/c/ICTypedefSymbol.ts +14 -0
  145. package/src/transpiler/types/symbols/c/ICVariableSymbol.ts +26 -0
  146. package/src/transpiler/types/symbols/c/TCSymbol.ts +26 -0
  147. package/src/transpiler/types/symbols/cpp/ICppBaseSymbol.ts +31 -0
  148. package/src/transpiler/types/symbols/cpp/ICppClassSymbol.ts +15 -0
  149. package/src/transpiler/types/symbols/cpp/ICppEnumMemberSymbol.ts +14 -0
  150. package/src/transpiler/types/symbols/cpp/ICppEnumSymbol.ts +14 -0
  151. package/src/transpiler/types/symbols/cpp/ICppFieldInfo.ts +16 -0
  152. package/src/transpiler/types/symbols/cpp/ICppFunctionSymbol.ts +21 -0
  153. package/src/transpiler/types/symbols/cpp/ICppNamespaceSymbol.ts +11 -0
  154. package/src/transpiler/types/symbols/cpp/ICppParameterInfo.ts +19 -0
  155. package/src/transpiler/types/symbols/cpp/ICppStructSymbol.ts +16 -0
  156. package/src/transpiler/types/symbols/cpp/ICppTypeAliasSymbol.ts +14 -0
  157. package/src/transpiler/types/symbols/cpp/ICppVariableSymbol.ts +23 -0
  158. package/src/transpiler/types/symbols/cpp/TCppSymbol.ts +30 -0
  159. package/src/utils/CppNamespaceUtils.ts +3 -4
  160. package/src/utils/FunctionUtils.ts +92 -0
  161. package/src/utils/ParameterUtils.ts +55 -0
  162. package/src/utils/PrimitiveKindUtils.ts +33 -0
  163. package/src/utils/ScopeUtils.ts +105 -0
  164. package/src/utils/TTypeUtils.ts +159 -0
  165. package/src/utils/TypeResolver.ts +132 -0
  166. package/src/utils/__tests__/CppNamespaceUtils.test.ts +92 -99
  167. package/src/utils/__tests__/FunctionUtils.test.ts +284 -0
  168. package/src/utils/__tests__/ParameterUtils.test.ts +174 -0
  169. package/src/utils/__tests__/PrimitiveKindUtils.test.ts +59 -0
  170. package/src/utils/__tests__/ScopeUtils.test.ts +53 -0
  171. package/src/utils/__tests__/TTypeUtils.test.ts +245 -0
  172. package/src/utils/__tests__/TypeResolver.test.ts +332 -0
  173. package/src/utils/cache/CacheManager.ts +91 -50
  174. package/src/utils/cache/__tests__/CacheManager.test.ts +180 -114
  175. package/src/transpiler/logic/symbols/AutoConstUpdater.ts +0 -93
  176. package/src/transpiler/logic/symbols/CSymbolCollector.ts +0 -648
  177. package/src/transpiler/logic/symbols/CppSymbolCollector.ts +0 -874
  178. package/src/transpiler/logic/symbols/SymbolCollectorContext.ts +0 -68
  179. package/src/transpiler/logic/symbols/__tests__/AutoConstUpdater.test.ts +0 -418
  180. package/src/transpiler/logic/symbols/__tests__/CSymbolCollector.test.ts +0 -685
  181. package/src/transpiler/logic/symbols/__tests__/CppSymbolCollector.test.ts +0 -1146
  182. package/src/transpiler/logic/symbols/__tests__/SymbolCollectorContext.test.ts +0 -290
  183. package/src/transpiler/logic/symbols/__tests__/cTestHelpers.ts +0 -43
  184. package/src/transpiler/logic/symbols/__tests__/cppTestHelpers.ts +0 -40
  185. package/src/transpiler/logic/symbols/cnext/__tests__/TSymbolAdapter.test.ts +0 -595
  186. package/src/transpiler/logic/symbols/cnext/adapters/TSymbolAdapter.ts +0 -345
  187. package/src/transpiler/logic/symbols/types/IBaseSymbol.ts +0 -27
  188. package/src/transpiler/logic/symbols/types/IBitmapSymbol.ts +0 -23
  189. package/src/transpiler/logic/symbols/types/ICollectorContext.ts +0 -19
  190. package/src/transpiler/logic/symbols/types/IConflict.ts +0 -20
  191. package/src/transpiler/logic/symbols/types/IFieldInfo.ts +0 -18
  192. package/src/transpiler/logic/symbols/types/IFunctionSymbol.ts +0 -25
  193. package/src/transpiler/logic/symbols/types/IParameterInfo.ts +0 -24
  194. package/src/transpiler/logic/symbols/types/IRegisterSymbol.ts +0 -20
  195. package/src/transpiler/logic/symbols/types/IScopeSymbol.ts +0 -19
  196. package/src/transpiler/logic/symbols/types/IStructSymbol.ts +0 -16
  197. package/src/transpiler/logic/symbols/types/IVariableSymbol.ts +0 -30
  198. package/src/transpiler/logic/symbols/types/TSymbol.ts +0 -36
  199. package/src/transpiler/logic/symbols/types/__tests__/SymbolGuards.test.ts +0 -244
  200. package/src/transpiler/logic/symbols/types/typeGuards.ts +0 -44
  201. package/src/utils/types/ESymbolKind.ts +0 -19
  202. package/src/utils/types/ISymbol.ts +0 -64
  203. /package/src/transpiler/{types → constants}/BITMAP_BACKING_TYPE.ts +0 -0
  204. /package/src/transpiler/{types → constants}/BITMAP_SIZE.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 ESymbolKind from "../utils/types/ESymbolKind";
29
- import ISymbol from "../utils/types/ISymbol";
28
+ import ISerializedSymbol from "./types/ISerializedSymbol";
29
+ import ESourceLanguage from "../utils/types/ESourceLanguage";
30
30
  import CNextResolver from "./logic/symbols/cnext";
31
- import TSymbolAdapter from "./logic/symbols/cnext/adapters/TSymbolAdapter";
31
+ import SymbolRegistry from "./state/SymbolRegistry";
32
32
  import TSymbolInfoAdapter from "./logic/symbols/cnext/adapters/TSymbolInfoAdapter";
33
- import CSymbolCollector from "./logic/symbols/CSymbolCollector";
34
- import CppSymbolCollector from "./logic/symbols/CppSymbolCollector";
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 "./types/TranspilerState";
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 + TSymbolAdapter
338
+ // ADR-055 Phase 7: Use composable collectors via CNextResolver
337
339
  const tSymbols = CNextResolver.resolve(tree, file.path);
338
- const iSymbols = TSymbolAdapter.toISymbols(
339
- tSymbols,
340
- CodeGenState.symbolTable,
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
- // Update symbol parameters with auto-const info
454
- const symbols = CodeGenState.symbolTable.getSymbolsByFile(sourcePath);
455
- const unmodifiedParams = this.codeGenerator.getFunctionUnmodifiedParams();
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
- symbols,
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
- CodeGenState.symbolTable.addSymbols(cached.symbols);
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 collector = new CSymbolCollector(
1211
+ const result = CResolver.resolve(
1212
+ tree,
1138
1213
  filePath,
1139
1214
  CodeGenState.symbolTable,
1140
1215
  );
1141
- const symbols = collector.collect(tree);
1142
- if (symbols.length > 0) {
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 collector = new CppSymbolCollector(
1228
+ const result = CppResolver.resolve(
1229
+ tree,
1155
1230
  filePath,
1156
1231
  CodeGenState.symbolTable,
1157
1232
  );
1158
- const symbols = collector.collect(tree);
1159
- CodeGenState.symbolTable.addSymbols(symbols);
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 symbols = CodeGenState.symbolTable.getSymbolsByFile(file.path);
1172
- const exportedSymbols = symbols.filter((s) => s.isExported);
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
- exportedSymbols,
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
- symbols: ISymbol[],
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 = symbols.filter(
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
- exportedSymbols,
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
  // ===========================================================================
@@ -11,7 +11,6 @@ import { ParseTreeWalker } from "antlr4ng";
11
11
  import { CNextListener } from "../parser/grammar/CNextListener";
12
12
  import * as Parser from "../parser/grammar/CNextParser";
13
13
  import SymbolTable from "../symbols/SymbolTable";
14
- import ESymbolKind from "../../../utils/types/ESymbolKind";
15
14
  import IFunctionCallError from "./types/IFunctionCallError";
16
15
  import ParserUtils from "../../../utils/ParserUtils";
17
16
 
@@ -687,7 +686,7 @@ class FunctionCallAnalyzer {
687
686
  // Accept functions from any source language:
688
687
  // - C/C++ functions from header includes
689
688
  // - C-Next functions from .cnx file includes
690
- if (sym.kind === ESymbolKind.Function) {
689
+ if (sym.kind === "function") {
691
690
  return true;
692
691
  }
693
692
  }
@@ -23,7 +23,6 @@ import analyzePostfixOps from "../../../utils/PostfixAnalysisUtils";
23
23
  import SymbolTable from "../symbols/SymbolTable";
24
24
  import CodeGenState from "../../state/CodeGenState";
25
25
  import ESourceLanguage from "../../../utils/types/ESourceLanguage";
26
- import ESymbolKind from "../../../utils/types/ESymbolKind";
27
26
 
28
27
  /**
29
28
  * Tracks the initialization state of a variable
@@ -459,7 +458,7 @@ class InitializationAnalyzer {
459
458
  for (const sym of symbols) {
460
459
  if (sym.sourceLanguage === ESourceLanguage.Cpp) {
461
460
  // C++ classes and structs have default constructors
462
- if (sym.kind === ESymbolKind.Struct || sym.kind === ESymbolKind.Class) {
461
+ if (sym.kind === "struct" || sym.kind === "class") {
463
462
  return true;
464
463
  }
465
464
  }
@@ -19,6 +19,8 @@
19
19
 
20
20
  import * as Parser from "../parser/grammar/CNextParser";
21
21
  import CodeGenState from "../../state/CodeGenState";
22
+ import SymbolRegistry from "../../state/SymbolRegistry";
23
+ import FunctionUtils from "../../../utils/FunctionUtils";
22
24
  import TransitiveModificationPropagator from "./helpers/TransitiveModificationPropagator";
23
25
  import StatementExpressionCollector from "./helpers/StatementExpressionCollector";
24
26
  import ChildStatementCollector from "./helpers/ChildStatementCollector";
@@ -480,6 +482,7 @@ class PassByValueAnalyzer {
480
482
 
481
483
  /**
482
484
  * Handle simple function calls: IDENTIFIER followed by '(' ... ')'
485
+ * Issue #797: Resolve bare function names to scope-qualified names when inside a scope.
483
486
  */
484
487
  private static handleSimpleFunctionCall(
485
488
  funcName: string,
@@ -492,15 +495,61 @@ class PassByValueAnalyzer {
492
495
  const firstOp = postfixOps[0];
493
496
  if (!firstOp.LPAREN()) return;
494
497
 
495
- const calleeName = primary.IDENTIFIER()!.getText();
498
+ const bareCalleeName = primary.IDENTIFIER()!.getText();
499
+ const resolvedCalleeName = PassByValueAnalyzer.resolveCalleeNameInScope(
500
+ funcName,
501
+ bareCalleeName,
502
+ );
496
503
  PassByValueAnalyzer.recordCallsFromArgList(
497
504
  funcName,
498
505
  paramSet,
499
- calleeName,
506
+ resolvedCalleeName,
500
507
  firstOp,
501
508
  );
502
509
  }
503
510
 
511
+ /**
512
+ * Issue #797: Resolve a bare function name to its scope-qualified name.
513
+ * When inside a scope, bare calls like `fillData()` should resolve to `Scope_fillData`.
514
+ *
515
+ * Uses SymbolRegistry for proper scope-aware resolution instead of string parsing.
516
+ */
517
+ private static resolveCalleeNameInScope(
518
+ callerFuncName: string,
519
+ bareCalleeName: string,
520
+ ): string {
521
+ // Try to resolve using SymbolRegistry (new type system)
522
+ const callerScope =
523
+ SymbolRegistry.getScopeByMangledFunctionName(callerFuncName);
524
+ if (callerScope) {
525
+ // Use SymbolRegistry.resolveFunction to find the callee in scope chain
526
+ const callee = SymbolRegistry.resolveFunction(
527
+ bareCalleeName,
528
+ callerScope,
529
+ );
530
+ if (callee) {
531
+ // Use FunctionUtils to get the C-mangled name (types layer, not output layer)
532
+ return FunctionUtils.getCMangledName(callee);
533
+ }
534
+ }
535
+
536
+ // Fallback to legacy string-based lookup for backward compatibility
537
+ // (handles functions from C headers, external functions, etc.)
538
+ const underscoreIndex = callerFuncName.indexOf("_");
539
+ if (underscoreIndex === -1) {
540
+ return bareCalleeName;
541
+ }
542
+
543
+ const scopePrefix = callerFuncName.substring(0, underscoreIndex + 1);
544
+ const qualifiedName = scopePrefix + bareCalleeName;
545
+
546
+ if (CodeGenState.functionParamLists.has(qualifiedName)) {
547
+ return qualifiedName;
548
+ }
549
+
550
+ return bareCalleeName;
551
+ }
552
+
504
553
  /**
505
554
  * Handle scope-qualified calls: Scope.method(...) or global.Scope.method(...)
506
555
  * Track member accesses to build the mangled callee name (e.g., Storage_load)
@@ -9,7 +9,9 @@ import { CNextParser } from "../../parser/grammar/CNextParser";
9
9
  import FunctionCallAnalyzer from "../FunctionCallAnalyzer";
10
10
  import SymbolTable from "../../symbols/SymbolTable";
11
11
  import ESourceLanguage from "../../../../utils/types/ESourceLanguage";
12
- import ESymbolKind from "../../../../utils/types/ESymbolKind";
12
+ import TestScopeUtils from "../../symbols/cnext/__tests__/testUtils";
13
+ import TTypeUtils from "../../../../utils/TTypeUtils";
14
+ import type IFunctionSymbol from "../../../types/symbols/IFunctionSymbol";
13
15
 
14
16
  /**
15
17
  * Helper to parse C-Next code and return the AST
@@ -367,9 +369,9 @@ describe("FunctionCallAnalyzer", () => {
367
369
  `;
368
370
  const tree = parse(code);
369
371
  const symbolTable = new SymbolTable();
370
- symbolTable.addSymbol({
372
+ symbolTable.addCSymbol({
371
373
  name: "myExternalFunc",
372
- kind: ESymbolKind.Function,
374
+ kind: "function",
373
375
  sourceLanguage: ESourceLanguage.C,
374
376
  sourceFile: "external.h",
375
377
  sourceLine: 1,
@@ -391,9 +393,9 @@ describe("FunctionCallAnalyzer", () => {
391
393
  `;
392
394
  const tree = parse(code);
393
395
  const symbolTable = new SymbolTable();
394
- symbolTable.addSymbol({
396
+ symbolTable.addCppSymbol({
395
397
  name: "cppHelper",
396
- kind: ESymbolKind.Function,
398
+ kind: "function",
397
399
  sourceLanguage: ESourceLanguage.Cpp,
398
400
  sourceFile: "helper.hpp",
399
401
  sourceLine: 1,
@@ -517,9 +519,9 @@ describe("FunctionCallAnalyzer", () => {
517
519
  `;
518
520
  const tree = parse(code);
519
521
  const symbolTable = new SymbolTable();
520
- symbolTable.addSymbol({
522
+ symbolTable.addCppSymbol({
521
523
  name: "customExternalFunc",
522
- kind: ESymbolKind.Function,
524
+ kind: "function",
523
525
  sourceLanguage: ESourceLanguage.Cpp,
524
526
  sourceFile: "custom.hpp",
525
527
  sourceLine: 1,
@@ -626,15 +628,19 @@ describe("FunctionCallAnalyzer", () => {
626
628
  `;
627
629
  const tree = parse(code);
628
630
  const symbolTable = new SymbolTable();
629
- symbolTable.addSymbol({
631
+ symbolTable.addTSymbol({
632
+ kind: "function",
630
633
  name: "cnextFunc",
631
- kind: ESymbolKind.Function,
632
- sourceLanguage: ESourceLanguage.CNext,
633
634
  sourceFile: "module.cnx",
634
635
  sourceLine: 1,
636
+ sourceLanguage: ESourceLanguage.CNext,
635
637
  isExported: true,
636
- type: "void",
637
- });
638
+ returnType: TTypeUtils.createPrimitive("void"),
639
+ parameters: [],
640
+ scope: TestScopeUtils.createMockGlobalScope(),
641
+ visibility: "public",
642
+ body: null,
643
+ } as IFunctionSymbol);
638
644
 
639
645
  const analyzer = new FunctionCallAnalyzer();
640
646
  const errors = analyzer.analyze(tree, symbolTable);
@@ -10,7 +10,6 @@ import { CNextParser } from "../../parser/grammar/CNextParser";
10
10
  import InitializationAnalyzer from "../InitializationAnalyzer";
11
11
  import SymbolTable from "../../symbols/SymbolTable";
12
12
  import CodeGenState from "../../../state/CodeGenState";
13
- import ESymbolKind from "../../../../utils/types/ESymbolKind";
14
13
  import ESourceLanguage from "../../../../utils/types/ESourceLanguage";
15
14
 
16
15
  /**
@@ -46,9 +45,9 @@ describe("InitializationAnalyzer", () => {
46
45
  const tree = parse(code);
47
46
 
48
47
  // Set up CodeGenState with C++ class
49
- CodeGenState.symbolTable.addSymbol({
48
+ CodeGenState.symbolTable.addCppSymbol({
50
49
  name: "CppMessage",
51
- kind: ESymbolKind.Class,
50
+ kind: "class",
52
51
  sourceLanguage: ESourceLanguage.Cpp,
53
52
  sourceFile: "CppMessage.hpp",
54
53
  sourceLine: 1,
@@ -101,9 +100,9 @@ describe("InitializationAnalyzer", () => {
101
100
  const tree = parse(code);
102
101
 
103
102
  // Set up CodeGenState with C++ struct (not class)
104
- CodeGenState.symbolTable.addSymbol({
103
+ CodeGenState.symbolTable.addCppSymbol({
105
104
  name: "CppStruct",
106
- kind: ESymbolKind.Struct,
105
+ kind: "struct",
107
106
  sourceLanguage: ESourceLanguage.Cpp,
108
107
  sourceFile: "types.hpp",
109
108
  sourceLine: 1,
@@ -131,13 +130,14 @@ describe("InitializationAnalyzer", () => {
131
130
  const tree = parse(code);
132
131
 
133
132
  // Set up CodeGenState with C struct (not C++)
134
- CodeGenState.symbolTable.addSymbol({
133
+ CodeGenState.symbolTable.addCSymbol({
135
134
  name: "CStruct",
136
- kind: ESymbolKind.Struct,
135
+ kind: "struct",
137
136
  sourceLanguage: ESourceLanguage.C,
138
137
  sourceFile: "types.h",
139
138
  sourceLine: 1,
140
139
  isExported: true,
140
+ isUnion: false,
141
141
  });
142
142
  CodeGenState.symbolTable.addStructField("CStruct", "value", "u32");
143
143
 
@@ -836,9 +836,9 @@ describe("InitializationAnalyzer", () => {
836
836
  const tree = parse(code);
837
837
 
838
838
  const symbolTable = new SymbolTable();
839
- symbolTable.addSymbol({
839
+ symbolTable.addCppSymbol({
840
840
  name: "CppEnum",
841
- kind: ESymbolKind.Enum,
841
+ kind: "enum",
842
842
  sourceLanguage: ESourceLanguage.Cpp,
843
843
  sourceFile: "types.hpp",
844
844
  sourceLine: 1,
@@ -9,7 +9,6 @@ import { CNextParser } from "../../parser/grammar/CNextParser";
9
9
  import runAnalyzers from "../runAnalyzers";
10
10
  import SymbolTable from "../../symbols/SymbolTable";
11
11
  import CodeGenState from "../../../state/CodeGenState";
12
- import ESymbolKind from "../../../../utils/types/ESymbolKind";
13
12
  import ESourceLanguage from "../../../../utils/types/ESourceLanguage";
14
13
 
15
14
  /**
@@ -251,13 +250,14 @@ describe("runAnalyzers", () => {
251
250
  `);
252
251
 
253
252
  const symbolTable = new SymbolTable();
254
- symbolTable.addSymbol({
253
+ symbolTable.addCSymbol({
255
254
  name: "ExternalFunc",
256
- kind: ESymbolKind.Function,
255
+ kind: "function",
257
256
  sourceLanguage: ESourceLanguage.C,
258
257
  sourceFile: "external.h",
259
258
  sourceLine: 1,
260
259
  isExported: true,
260
+ type: "void",
261
261
  });
262
262
 
263
263
  const errors = runAnalyzers(tree, tokenStream, { symbolTable });
@@ -272,9 +272,9 @@ describe("runAnalyzers", () => {
272
272
  `);
273
273
 
274
274
  // Set up C++ class in CodeGenState.symbolTable
275
- CodeGenState.symbolTable.addSymbol({
275
+ CodeGenState.symbolTable.addCppSymbol({
276
276
  name: "CppMessage",
277
- kind: ESymbolKind.Class,
277
+ kind: "class",
278
278
  sourceLanguage: ESourceLanguage.Cpp,
279
279
  sourceFile: "CppMessage.hpp",
280
280
  sourceLine: 1,