c-next 0.1.70 → 0.1.72
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 +180 -63
- package/src/transpiler/logic/analysis/FunctionCallAnalyzer.ts +1 -2
- package/src/transpiler/logic/analysis/InitializationAnalyzer.ts +1 -2
- package/src/transpiler/logic/analysis/PassByValueAnalyzer.ts +51 -2
- package/src/transpiler/logic/analysis/__tests__/FunctionCallAnalyzer.test.ts +18 -12
- 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/logic/symbols/SymbolTable.ts +729 -265
- package/src/transpiler/logic/symbols/SymbolUtils.ts +2 -2
- package/src/transpiler/logic/symbols/__tests__/SymbolTable.test.ts +415 -751
- 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 +268 -1674
- package/src/transpiler/output/codegen/__tests__/CodeGenerator.test.ts +7 -1
- package/src/transpiler/output/codegen/assignment/AssignmentClassifier.ts +2 -1
- package/src/transpiler/output/codegen/assignment/handlers/AssignmentHandlerUtils.ts +7 -1
- package/src/transpiler/output/codegen/assignment/handlers/BitmapHandlers.ts +6 -2
- package/src/transpiler/output/codegen/assignment/handlers/RegisterHandlers.ts +2 -1
- 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/CallExprUtils.ts +9 -3
- package/src/transpiler/output/codegen/generators/expressions/__tests__/CallExprGenerator.test.ts +3 -4
- package/src/transpiler/output/codegen/generators/expressions/__tests__/CallExprUtils.test.ts +4 -8
- package/src/transpiler/output/codegen/helpers/ArgumentGenerator.ts +236 -0
- package/src/transpiler/output/codegen/helpers/CppConstructorHelper.ts +3 -3
- package/src/transpiler/output/codegen/helpers/FunctionContextManager.ts +435 -0
- 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__/CppConstructorHelper.test.ts +4 -5
- package/src/transpiler/output/codegen/helpers/__tests__/FunctionContextManager.test.ts +983 -0
- 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 +5 -1
- 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 +20 -33
- 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 +67 -59
- 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/IPipelineInput.ts +0 -3
- 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
|
@@ -8,29 +8,51 @@
|
|
|
8
8
|
|
|
9
9
|
import { describe, expect, it } from "vitest";
|
|
10
10
|
import TSymbolInfoAdapter from "../adapters/TSymbolInfoAdapter";
|
|
11
|
-
import ESymbolKind from "../../../../../utils/types/ESymbolKind";
|
|
12
11
|
import ESourceLanguage from "../../../../../utils/types/ESourceLanguage";
|
|
13
|
-
import IBitmapSymbol from "
|
|
14
|
-
import IEnumSymbol from "
|
|
15
|
-
import IStructSymbol from "
|
|
16
|
-
import IRegisterSymbol from "
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
12
|
+
import IBitmapSymbol from "../../../../types/symbols/IBitmapSymbol";
|
|
13
|
+
import IEnumSymbol from "../../../../types/symbols/IEnumSymbol";
|
|
14
|
+
import IStructSymbol from "../../../../types/symbols/IStructSymbol";
|
|
15
|
+
import IRegisterSymbol from "../../../../types/symbols/IRegisterSymbol";
|
|
16
|
+
import IVariableSymbol from "../../../../types/symbols/IVariableSymbol";
|
|
17
|
+
import IFunctionSymbol from "../../../../types/symbols/IFunctionSymbol";
|
|
18
|
+
import TypeResolver from "../../../../../utils/TypeResolver";
|
|
19
|
+
import TestScopeUtils from "./testUtils";
|
|
20
20
|
|
|
21
21
|
describe("TSymbolInfoAdapter", () => {
|
|
22
|
+
// Reset global scope between tests to avoid state pollution
|
|
23
|
+
const globalScope = TestScopeUtils.getGlobalScope();
|
|
24
|
+
|
|
22
25
|
describe("convert structs", () => {
|
|
23
26
|
it("should populate knownStructs set", () => {
|
|
24
27
|
const struct: IStructSymbol = {
|
|
25
|
-
kind:
|
|
28
|
+
kind: "struct",
|
|
26
29
|
name: "Point",
|
|
30
|
+
scope: globalScope,
|
|
27
31
|
sourceFile: "test.cnx",
|
|
28
32
|
sourceLine: 1,
|
|
29
33
|
sourceLanguage: ESourceLanguage.CNext,
|
|
30
34
|
isExported: true,
|
|
31
35
|
fields: new Map([
|
|
32
|
-
[
|
|
33
|
-
|
|
36
|
+
[
|
|
37
|
+
"x",
|
|
38
|
+
{
|
|
39
|
+
name: "x",
|
|
40
|
+
type: TypeResolver.resolve("i32"),
|
|
41
|
+
isArray: false,
|
|
42
|
+
isConst: false,
|
|
43
|
+
isAtomic: false,
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
[
|
|
47
|
+
"y",
|
|
48
|
+
{
|
|
49
|
+
name: "y",
|
|
50
|
+
type: TypeResolver.resolve("i32"),
|
|
51
|
+
isArray: false,
|
|
52
|
+
isConst: false,
|
|
53
|
+
isAtomic: false,
|
|
54
|
+
},
|
|
55
|
+
],
|
|
34
56
|
]),
|
|
35
57
|
};
|
|
36
58
|
|
|
@@ -41,15 +63,34 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
41
63
|
|
|
42
64
|
it("should populate structFields map", () => {
|
|
43
65
|
const struct: IStructSymbol = {
|
|
44
|
-
kind:
|
|
66
|
+
kind: "struct",
|
|
45
67
|
name: "Point",
|
|
68
|
+
scope: globalScope,
|
|
46
69
|
sourceFile: "test.cnx",
|
|
47
70
|
sourceLine: 1,
|
|
48
71
|
sourceLanguage: ESourceLanguage.CNext,
|
|
49
72
|
isExported: true,
|
|
50
73
|
fields: new Map([
|
|
51
|
-
[
|
|
52
|
-
|
|
74
|
+
[
|
|
75
|
+
"x",
|
|
76
|
+
{
|
|
77
|
+
name: "x",
|
|
78
|
+
type: TypeResolver.resolve("i32"),
|
|
79
|
+
isArray: false,
|
|
80
|
+
isConst: false,
|
|
81
|
+
isAtomic: false,
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
[
|
|
85
|
+
"y",
|
|
86
|
+
{
|
|
87
|
+
name: "y",
|
|
88
|
+
type: TypeResolver.resolve("f32"),
|
|
89
|
+
isArray: false,
|
|
90
|
+
isConst: false,
|
|
91
|
+
isAtomic: false,
|
|
92
|
+
},
|
|
93
|
+
],
|
|
53
94
|
]),
|
|
54
95
|
};
|
|
55
96
|
|
|
@@ -61,8 +102,9 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
61
102
|
|
|
62
103
|
it("should populate structFieldArrays for array fields", () => {
|
|
63
104
|
const struct: IStructSymbol = {
|
|
64
|
-
kind:
|
|
105
|
+
kind: "struct",
|
|
65
106
|
name: "Buffer",
|
|
107
|
+
scope: globalScope,
|
|
66
108
|
sourceFile: "test.cnx",
|
|
67
109
|
sourceLine: 1,
|
|
68
110
|
sourceLanguage: ESourceLanguage.CNext,
|
|
@@ -70,9 +112,25 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
70
112
|
fields: new Map([
|
|
71
113
|
[
|
|
72
114
|
"data",
|
|
73
|
-
{
|
|
115
|
+
{
|
|
116
|
+
name: "data",
|
|
117
|
+
type: TypeResolver.resolve("u8"),
|
|
118
|
+
isArray: true,
|
|
119
|
+
isConst: false,
|
|
120
|
+
isAtomic: false,
|
|
121
|
+
dimensions: [256],
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
[
|
|
125
|
+
"size",
|
|
126
|
+
{
|
|
127
|
+
name: "size",
|
|
128
|
+
type: TypeResolver.resolve("u32"),
|
|
129
|
+
isArray: false,
|
|
130
|
+
isConst: false,
|
|
131
|
+
isAtomic: false,
|
|
132
|
+
},
|
|
74
133
|
],
|
|
75
|
-
["size", { type: "u32", isArray: false, isConst: false }],
|
|
76
134
|
]),
|
|
77
135
|
};
|
|
78
136
|
|
|
@@ -84,8 +142,9 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
84
142
|
|
|
85
143
|
it("should populate structFieldDimensions for array fields", () => {
|
|
86
144
|
const struct: IStructSymbol = {
|
|
87
|
-
kind:
|
|
145
|
+
kind: "struct",
|
|
88
146
|
name: "Matrix",
|
|
147
|
+
scope: globalScope,
|
|
89
148
|
sourceFile: "test.cnx",
|
|
90
149
|
sourceLine: 1,
|
|
91
150
|
sourceLanguage: ESourceLanguage.CNext,
|
|
@@ -93,7 +152,14 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
93
152
|
fields: new Map([
|
|
94
153
|
[
|
|
95
154
|
"values",
|
|
96
|
-
{
|
|
155
|
+
{
|
|
156
|
+
name: "values",
|
|
157
|
+
type: TypeResolver.resolve("f32"),
|
|
158
|
+
isArray: true,
|
|
159
|
+
isConst: false,
|
|
160
|
+
isAtomic: false,
|
|
161
|
+
dimensions: [4, 4],
|
|
162
|
+
},
|
|
97
163
|
],
|
|
98
164
|
]),
|
|
99
165
|
};
|
|
@@ -109,8 +175,9 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
109
175
|
describe("convert enums", () => {
|
|
110
176
|
it("should populate knownEnums set", () => {
|
|
111
177
|
const enumSym: IEnumSymbol = {
|
|
112
|
-
kind:
|
|
178
|
+
kind: "enum",
|
|
113
179
|
name: "Color",
|
|
180
|
+
scope: globalScope,
|
|
114
181
|
sourceFile: "test.cnx",
|
|
115
182
|
sourceLine: 1,
|
|
116
183
|
sourceLanguage: ESourceLanguage.CNext,
|
|
@@ -129,8 +196,9 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
129
196
|
|
|
130
197
|
it("should populate enumMembers map", () => {
|
|
131
198
|
const enumSym: IEnumSymbol = {
|
|
132
|
-
kind:
|
|
199
|
+
kind: "enum",
|
|
133
200
|
name: "Priority",
|
|
201
|
+
scope: globalScope,
|
|
134
202
|
sourceFile: "test.cnx",
|
|
135
203
|
sourceLine: 1,
|
|
136
204
|
sourceLanguage: ESourceLanguage.CNext,
|
|
@@ -153,8 +221,9 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
153
221
|
describe("convert bitmaps", () => {
|
|
154
222
|
it("should populate knownBitmaps set", () => {
|
|
155
223
|
const bitmap: IBitmapSymbol = {
|
|
156
|
-
kind:
|
|
224
|
+
kind: "bitmap",
|
|
157
225
|
name: "Status",
|
|
226
|
+
scope: globalScope,
|
|
158
227
|
sourceFile: "test.cnx",
|
|
159
228
|
sourceLine: 1,
|
|
160
229
|
sourceLanguage: ESourceLanguage.CNext,
|
|
@@ -171,8 +240,9 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
171
240
|
|
|
172
241
|
it("should populate bitmapBackingType and bitmapBitWidth", () => {
|
|
173
242
|
const bitmap: IBitmapSymbol = {
|
|
174
|
-
kind:
|
|
243
|
+
kind: "bitmap",
|
|
175
244
|
name: "Control",
|
|
245
|
+
scope: globalScope,
|
|
176
246
|
sourceFile: "test.cnx",
|
|
177
247
|
sourceLine: 1,
|
|
178
248
|
sourceLanguage: ESourceLanguage.CNext,
|
|
@@ -194,8 +264,9 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
194
264
|
|
|
195
265
|
it("should populate bitmapFields with offset and width", () => {
|
|
196
266
|
const bitmap: IBitmapSymbol = {
|
|
197
|
-
kind:
|
|
267
|
+
kind: "bitmap",
|
|
198
268
|
name: "Flags",
|
|
269
|
+
scope: globalScope,
|
|
199
270
|
sourceFile: "test.cnx",
|
|
200
271
|
sourceLine: 1,
|
|
201
272
|
sourceLanguage: ESourceLanguage.CNext,
|
|
@@ -220,42 +291,33 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
220
291
|
|
|
221
292
|
describe("convert scopes", () => {
|
|
222
293
|
it("should populate knownScopes set", () => {
|
|
223
|
-
const
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
["run", "private"],
|
|
234
|
-
]),
|
|
235
|
-
};
|
|
294
|
+
const motorScope = TestScopeUtils.createMockScope("Motor");
|
|
295
|
+
(motorScope.members as string[]).push("init", "run");
|
|
296
|
+
(motorScope.memberVisibility as Map<string, string>).set(
|
|
297
|
+
"init",
|
|
298
|
+
"public",
|
|
299
|
+
);
|
|
300
|
+
(motorScope.memberVisibility as Map<string, string>).set(
|
|
301
|
+
"run",
|
|
302
|
+
"private",
|
|
303
|
+
);
|
|
236
304
|
|
|
237
|
-
const info = TSymbolInfoAdapter.convert([
|
|
305
|
+
const info = TSymbolInfoAdapter.convert([motorScope]);
|
|
238
306
|
|
|
239
307
|
expect(info.knownScopes.has("Motor")).toBe(true);
|
|
240
308
|
});
|
|
241
309
|
|
|
242
310
|
it("should populate scopeMembers with member names", () => {
|
|
243
|
-
const
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
memberVisibility: new Map([
|
|
252
|
-
["on", "public"],
|
|
253
|
-
["off", "public"],
|
|
254
|
-
["toggle", "private"],
|
|
255
|
-
]),
|
|
256
|
-
};
|
|
311
|
+
const ledScope = TestScopeUtils.createMockScope("LED");
|
|
312
|
+
(ledScope.members as string[]).push("on", "off", "toggle");
|
|
313
|
+
(ledScope.memberVisibility as Map<string, string>).set("on", "public");
|
|
314
|
+
(ledScope.memberVisibility as Map<string, string>).set("off", "public");
|
|
315
|
+
(ledScope.memberVisibility as Map<string, string>).set(
|
|
316
|
+
"toggle",
|
|
317
|
+
"private",
|
|
318
|
+
);
|
|
257
319
|
|
|
258
|
-
const info = TSymbolInfoAdapter.convert([
|
|
320
|
+
const info = TSymbolInfoAdapter.convert([ledScope]);
|
|
259
321
|
|
|
260
322
|
const members = info.scopeMembers.get("LED");
|
|
261
323
|
expect(members?.has("on")).toBe(true);
|
|
@@ -264,22 +326,22 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
264
326
|
});
|
|
265
327
|
|
|
266
328
|
it("should populate scopeMemberVisibility", () => {
|
|
267
|
-
const
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
329
|
+
const timerScope = TestScopeUtils.createMockScope("Timer");
|
|
330
|
+
(timerScope.members as string[]).push("start", "stop", "reset");
|
|
331
|
+
(timerScope.memberVisibility as Map<string, string>).set(
|
|
332
|
+
"start",
|
|
333
|
+
"public",
|
|
334
|
+
);
|
|
335
|
+
(timerScope.memberVisibility as Map<string, string>).set(
|
|
336
|
+
"stop",
|
|
337
|
+
"public",
|
|
338
|
+
);
|
|
339
|
+
(timerScope.memberVisibility as Map<string, string>).set(
|
|
340
|
+
"reset",
|
|
341
|
+
"private",
|
|
342
|
+
);
|
|
281
343
|
|
|
282
|
-
const info = TSymbolInfoAdapter.convert([
|
|
344
|
+
const info = TSymbolInfoAdapter.convert([timerScope]);
|
|
283
345
|
|
|
284
346
|
const visibility = info.scopeMemberVisibility.get("Timer");
|
|
285
347
|
expect(visibility?.get("start")).toBe("public");
|
|
@@ -291,8 +353,9 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
291
353
|
describe("convert registers", () => {
|
|
292
354
|
it("should populate knownRegisters set", () => {
|
|
293
355
|
const register: IRegisterSymbol = {
|
|
294
|
-
kind:
|
|
356
|
+
kind: "register",
|
|
295
357
|
name: "GPIO",
|
|
358
|
+
scope: globalScope,
|
|
296
359
|
sourceFile: "test.cnx",
|
|
297
360
|
sourceLine: 1,
|
|
298
361
|
sourceLanguage: ESourceLanguage.CNext,
|
|
@@ -310,8 +373,9 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
310
373
|
|
|
311
374
|
it("should populate registerBaseAddresses", () => {
|
|
312
375
|
const register: IRegisterSymbol = {
|
|
313
|
-
kind:
|
|
376
|
+
kind: "register",
|
|
314
377
|
name: "UART",
|
|
378
|
+
scope: globalScope,
|
|
315
379
|
sourceFile: "test.cnx",
|
|
316
380
|
sourceLine: 1,
|
|
317
381
|
sourceLanguage: ESourceLanguage.CNext,
|
|
@@ -329,8 +393,9 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
329
393
|
|
|
330
394
|
it("should populate register member info maps", () => {
|
|
331
395
|
const register: IRegisterSymbol = {
|
|
332
|
-
kind:
|
|
396
|
+
kind: "register",
|
|
333
397
|
name: "SPI",
|
|
398
|
+
scope: globalScope,
|
|
334
399
|
sourceFile: "test.cnx",
|
|
335
400
|
sourceLine: 1,
|
|
336
401
|
sourceLanguage: ESourceLanguage.CNext,
|
|
@@ -354,8 +419,9 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
354
419
|
|
|
355
420
|
it("should track bitmap types for register members", () => {
|
|
356
421
|
const bitmap: IBitmapSymbol = {
|
|
357
|
-
kind:
|
|
422
|
+
kind: "bitmap",
|
|
358
423
|
name: "StatusFlags",
|
|
424
|
+
scope: globalScope,
|
|
359
425
|
sourceFile: "test.cnx",
|
|
360
426
|
sourceLine: 1,
|
|
361
427
|
sourceLanguage: ESourceLanguage.CNext,
|
|
@@ -366,8 +432,9 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
366
432
|
};
|
|
367
433
|
|
|
368
434
|
const register: IRegisterSymbol = {
|
|
369
|
-
kind:
|
|
435
|
+
kind: "register",
|
|
370
436
|
name: "CTRL",
|
|
437
|
+
scope: globalScope,
|
|
371
438
|
sourceFile: "test.cnx",
|
|
372
439
|
sourceLine: 1,
|
|
373
440
|
sourceLanguage: ESourceLanguage.CNext,
|
|
@@ -395,15 +462,17 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
395
462
|
|
|
396
463
|
describe("convert variables", () => {
|
|
397
464
|
it("should track private scope const values for inlining", () => {
|
|
398
|
-
//
|
|
465
|
+
// Create a scoped variable with bare name and scope reference
|
|
466
|
+
const motorScope = TestScopeUtils.createMockScope("Motor");
|
|
399
467
|
const variable: IVariableSymbol = {
|
|
400
|
-
kind:
|
|
401
|
-
name: "
|
|
468
|
+
kind: "variable",
|
|
469
|
+
name: "MAX_SPEED", // Bare name - adapter computes mangled name
|
|
470
|
+
scope: motorScope,
|
|
402
471
|
sourceFile: "test.cnx",
|
|
403
472
|
sourceLine: 1,
|
|
404
473
|
sourceLanguage: ESourceLanguage.CNext,
|
|
405
474
|
isExported: false, // private
|
|
406
|
-
type: "u32",
|
|
475
|
+
type: TypeResolver.resolve("u32"),
|
|
407
476
|
isConst: true,
|
|
408
477
|
isAtomic: false,
|
|
409
478
|
isArray: false,
|
|
@@ -412,18 +481,21 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
412
481
|
|
|
413
482
|
const info = TSymbolInfoAdapter.convert([variable]);
|
|
414
483
|
|
|
484
|
+
// Adapter stores using mangled name (scope + bare name)
|
|
415
485
|
expect(info.scopePrivateConstValues.get("Motor_MAX_SPEED")).toBe("255");
|
|
416
486
|
});
|
|
417
487
|
|
|
418
488
|
it("should not track public const values", () => {
|
|
489
|
+
const motorScope = TestScopeUtils.createMockScope("Motor");
|
|
419
490
|
const variable: IVariableSymbol = {
|
|
420
|
-
kind:
|
|
421
|
-
name: "
|
|
491
|
+
kind: "variable",
|
|
492
|
+
name: "PUBLIC_CONST", // Bare name - adapter computes mangled name
|
|
493
|
+
scope: motorScope,
|
|
422
494
|
sourceFile: "test.cnx",
|
|
423
495
|
sourceLine: 1,
|
|
424
496
|
sourceLanguage: ESourceLanguage.CNext,
|
|
425
497
|
isExported: true, // public
|
|
426
|
-
type: "u32",
|
|
498
|
+
type: TypeResolver.resolve("u32"),
|
|
427
499
|
isConst: true,
|
|
428
500
|
isAtomic: false,
|
|
429
501
|
isArray: false,
|
|
@@ -438,14 +510,16 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
438
510
|
});
|
|
439
511
|
|
|
440
512
|
it("should not track non-const private values", () => {
|
|
513
|
+
const motorScope = TestScopeUtils.createMockScope("Motor");
|
|
441
514
|
const variable: IVariableSymbol = {
|
|
442
|
-
kind:
|
|
443
|
-
name: "
|
|
515
|
+
kind: "variable",
|
|
516
|
+
name: "counter", // Bare name - adapter computes mangled name
|
|
517
|
+
scope: motorScope,
|
|
444
518
|
sourceFile: "test.cnx",
|
|
445
519
|
sourceLine: 1,
|
|
446
520
|
sourceLanguage: ESourceLanguage.CNext,
|
|
447
521
|
isExported: false,
|
|
448
|
-
type: "u32",
|
|
522
|
+
type: TypeResolver.resolve("u32"),
|
|
449
523
|
isConst: false, // not const
|
|
450
524
|
isAtomic: false,
|
|
451
525
|
isArray: false,
|
|
@@ -458,14 +532,16 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
458
532
|
|
|
459
533
|
it("should NOT track private const array values for inlining", () => {
|
|
460
534
|
// Issue #500: Array consts must be emitted, not inlined
|
|
535
|
+
const motorScope = TestScopeUtils.createMockScope("Motor");
|
|
461
536
|
const variable: IVariableSymbol = {
|
|
462
|
-
kind:
|
|
463
|
-
name: "
|
|
537
|
+
kind: "variable",
|
|
538
|
+
name: "LOOKUP_TABLE", // Bare name - adapter computes mangled name
|
|
539
|
+
scope: motorScope,
|
|
464
540
|
sourceFile: "test.cnx",
|
|
465
541
|
sourceLine: 1,
|
|
466
542
|
sourceLanguage: ESourceLanguage.CNext,
|
|
467
543
|
isExported: false,
|
|
468
|
-
type: "u16",
|
|
544
|
+
type: TypeResolver.resolve("u16"),
|
|
469
545
|
isConst: true,
|
|
470
546
|
isAtomic: false,
|
|
471
547
|
isArray: true,
|
|
@@ -483,14 +559,16 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
483
559
|
|
|
484
560
|
it("should NOT track private const multi-dimensional array values", () => {
|
|
485
561
|
// Issue #500: Multi-dimensional arrays must also be emitted
|
|
562
|
+
const motorScope = TestScopeUtils.createMockScope("Motor");
|
|
486
563
|
const variable: IVariableSymbol = {
|
|
487
|
-
kind:
|
|
488
|
-
name: "
|
|
564
|
+
kind: "variable",
|
|
565
|
+
name: "MATRIX", // Bare name - adapter computes mangled name
|
|
566
|
+
scope: motorScope,
|
|
489
567
|
sourceFile: "test.cnx",
|
|
490
568
|
sourceLine: 1,
|
|
491
569
|
sourceLanguage: ESourceLanguage.CNext,
|
|
492
570
|
isExported: false,
|
|
493
|
-
type: "u8",
|
|
571
|
+
type: TypeResolver.resolve("u8"),
|
|
494
572
|
isConst: true,
|
|
495
573
|
isAtomic: false,
|
|
496
574
|
isArray: true,
|
|
@@ -506,49 +584,48 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
506
584
|
|
|
507
585
|
describe("hasPublicSymbols", () => {
|
|
508
586
|
it("should return true when scope has public members", () => {
|
|
509
|
-
const
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
sourceFile: "test.cnx",
|
|
513
|
-
sourceLine: 1,
|
|
514
|
-
sourceLanguage: ESourceLanguage.CNext,
|
|
515
|
-
isExported: true,
|
|
516
|
-
members: ["on"],
|
|
517
|
-
memberVisibility: new Map([["on", "public"]]),
|
|
518
|
-
};
|
|
587
|
+
const ledScope = TestScopeUtils.createMockScope("LED");
|
|
588
|
+
(ledScope.members as string[]).push("on");
|
|
589
|
+
(ledScope.memberVisibility as Map<string, string>).set("on", "public");
|
|
519
590
|
|
|
520
|
-
const info = TSymbolInfoAdapter.convert([
|
|
591
|
+
const info = TSymbolInfoAdapter.convert([ledScope]);
|
|
521
592
|
|
|
522
593
|
expect(info.hasPublicSymbols()).toBe(true);
|
|
523
594
|
});
|
|
524
595
|
|
|
525
596
|
it("should return false when all scope members are private", () => {
|
|
526
|
-
const
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
isExported: true,
|
|
533
|
-
members: ["helper"],
|
|
534
|
-
memberVisibility: new Map([["helper", "private"]]),
|
|
535
|
-
};
|
|
597
|
+
const internalScope = TestScopeUtils.createMockScope("Internal");
|
|
598
|
+
(internalScope.members as string[]).push("helper");
|
|
599
|
+
(internalScope.memberVisibility as Map<string, string>).set(
|
|
600
|
+
"helper",
|
|
601
|
+
"private",
|
|
602
|
+
);
|
|
536
603
|
|
|
537
|
-
const info = TSymbolInfoAdapter.convert([
|
|
604
|
+
const info = TSymbolInfoAdapter.convert([internalScope]);
|
|
538
605
|
|
|
539
606
|
expect(info.hasPublicSymbols()).toBe(false);
|
|
540
607
|
});
|
|
541
608
|
|
|
542
609
|
it("should return false when there are no scopes", () => {
|
|
543
610
|
const struct: IStructSymbol = {
|
|
544
|
-
kind:
|
|
611
|
+
kind: "struct",
|
|
545
612
|
name: "Point",
|
|
613
|
+
scope: globalScope,
|
|
546
614
|
sourceFile: "test.cnx",
|
|
547
615
|
sourceLine: 1,
|
|
548
616
|
sourceLanguage: ESourceLanguage.CNext,
|
|
549
617
|
isExported: true,
|
|
550
618
|
fields: new Map([
|
|
551
|
-
[
|
|
619
|
+
[
|
|
620
|
+
"x",
|
|
621
|
+
{
|
|
622
|
+
name: "x",
|
|
623
|
+
type: TypeResolver.resolve("i32"),
|
|
624
|
+
isArray: false,
|
|
625
|
+
isConst: false,
|
|
626
|
+
isAtomic: false,
|
|
627
|
+
},
|
|
628
|
+
],
|
|
552
629
|
]),
|
|
553
630
|
};
|
|
554
631
|
|
|
@@ -568,18 +645,14 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
568
645
|
// Note: scopeVariableUsage requires function body analysis
|
|
569
646
|
// which isn't done by the current collectors
|
|
570
647
|
it("should return null for unknown variables", () => {
|
|
571
|
-
const
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
isExported: true,
|
|
578
|
-
members: ["counter"],
|
|
579
|
-
memberVisibility: new Map([["counter", "private"]]),
|
|
580
|
-
};
|
|
648
|
+
const motorScope = TestScopeUtils.createMockScope("Motor");
|
|
649
|
+
(motorScope.members as string[]).push("counter");
|
|
650
|
+
(motorScope.memberVisibility as Map<string, string>).set(
|
|
651
|
+
"counter",
|
|
652
|
+
"private",
|
|
653
|
+
);
|
|
581
654
|
|
|
582
|
-
const info = TSymbolInfoAdapter.convert([
|
|
655
|
+
const info = TSymbolInfoAdapter.convert([motorScope]);
|
|
583
656
|
|
|
584
657
|
expect(info.getSingleFunctionForVariable("Motor", "counter")).toBeNull();
|
|
585
658
|
});
|
|
@@ -587,21 +660,39 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
587
660
|
|
|
588
661
|
describe("mixed symbols", () => {
|
|
589
662
|
it("should handle array of different symbol types", () => {
|
|
663
|
+
const motorScope = TestScopeUtils.createMockScope("Motor");
|
|
664
|
+
(motorScope.members as string[]).push("init");
|
|
665
|
+
(motorScope.memberVisibility as Map<string, string>).set(
|
|
666
|
+
"init",
|
|
667
|
+
"public",
|
|
668
|
+
);
|
|
669
|
+
|
|
590
670
|
const symbols = [
|
|
591
671
|
{
|
|
592
|
-
kind:
|
|
672
|
+
kind: "struct",
|
|
593
673
|
name: "Point",
|
|
674
|
+
scope: globalScope,
|
|
594
675
|
sourceFile: "test.cnx",
|
|
595
676
|
sourceLine: 1,
|
|
596
677
|
sourceLanguage: ESourceLanguage.CNext,
|
|
597
678
|
isExported: true,
|
|
598
679
|
fields: new Map([
|
|
599
|
-
[
|
|
680
|
+
[
|
|
681
|
+
"x",
|
|
682
|
+
{
|
|
683
|
+
name: "x",
|
|
684
|
+
type: TypeResolver.resolve("i32"),
|
|
685
|
+
isArray: false,
|
|
686
|
+
isConst: false,
|
|
687
|
+
isAtomic: false,
|
|
688
|
+
},
|
|
689
|
+
],
|
|
600
690
|
]),
|
|
601
691
|
} as IStructSymbol,
|
|
602
692
|
{
|
|
603
|
-
kind:
|
|
693
|
+
kind: "enum",
|
|
604
694
|
name: "Color",
|
|
695
|
+
scope: globalScope,
|
|
605
696
|
sourceFile: "test.cnx",
|
|
606
697
|
sourceLine: 5,
|
|
607
698
|
sourceLanguage: ESourceLanguage.CNext,
|
|
@@ -611,24 +702,17 @@ describe("TSymbolInfoAdapter", () => {
|
|
|
611
702
|
["Green", 1],
|
|
612
703
|
]),
|
|
613
704
|
} as IEnumSymbol,
|
|
705
|
+
motorScope,
|
|
614
706
|
{
|
|
615
|
-
kind:
|
|
616
|
-
name: "Motor",
|
|
617
|
-
sourceFile: "test.cnx",
|
|
618
|
-
sourceLine: 10,
|
|
619
|
-
sourceLanguage: ESourceLanguage.CNext,
|
|
620
|
-
isExported: true,
|
|
621
|
-
members: ["init"],
|
|
622
|
-
memberVisibility: new Map([["init", "public"]]),
|
|
623
|
-
} as IScopeSymbol,
|
|
624
|
-
{
|
|
625
|
-
kind: ESymbolKind.Function,
|
|
707
|
+
kind: "function",
|
|
626
708
|
name: "main",
|
|
709
|
+
scope: globalScope,
|
|
710
|
+
body: null,
|
|
627
711
|
sourceFile: "test.cnx",
|
|
628
712
|
sourceLine: 15,
|
|
629
713
|
sourceLanguage: ESourceLanguage.CNext,
|
|
630
714
|
isExported: true,
|
|
631
|
-
returnType: "void",
|
|
715
|
+
returnType: TypeResolver.resolve("void"),
|
|
632
716
|
visibility: "public",
|
|
633
717
|
parameters: [],
|
|
634
718
|
} as IFunctionSymbol,
|