c-next 0.1.65 → 0.1.67

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 (73) hide show
  1. package/package.json +5 -1
  2. package/src/transpiler/Transpiler.ts +49 -42
  3. package/src/transpiler/logic/symbols/cnext/__tests__/TSymbolAdapter.test.ts +129 -0
  4. package/src/transpiler/logic/symbols/cnext/adapters/TSymbolAdapter.ts +27 -3
  5. package/src/transpiler/output/codegen/CodeGenerator.ts +131 -186
  6. package/src/transpiler/output/codegen/TypeResolver.ts +2 -2
  7. package/src/transpiler/output/codegen/TypeValidator.ts +1 -1
  8. package/src/transpiler/output/codegen/__tests__/CodeGenerator.coverage.test.ts +1087 -0
  9. package/src/transpiler/output/codegen/__tests__/CodeGenerator.test.ts +665 -1315
  10. package/src/transpiler/output/codegen/__tests__/TypeResolver.test.ts +1 -1
  11. package/src/transpiler/output/codegen/__tests__/TypeValidator.resolution.test.ts +1 -1
  12. package/src/transpiler/output/codegen/__tests__/TypeValidator.test.ts +1 -1
  13. package/src/transpiler/output/codegen/analysis/MemberChainAnalyzer.ts +1 -1
  14. package/src/transpiler/output/codegen/analysis/StringLengthCounter.ts +1 -1
  15. package/src/transpiler/output/codegen/analysis/__tests__/MemberChainAnalyzer.test.ts +1 -1
  16. package/src/transpiler/output/codegen/analysis/__tests__/StringLengthCounter.test.ts +1 -1
  17. package/src/transpiler/output/codegen/assignment/AssignmentClassifier.ts +1 -1
  18. package/src/transpiler/output/codegen/assignment/__tests__/AssignmentClassifier.test.ts +1 -1
  19. package/src/transpiler/output/codegen/assignment/handlers/AccessPatternHandlers.ts +24 -27
  20. package/src/transpiler/output/codegen/assignment/handlers/ArrayHandlers.ts +25 -18
  21. package/src/transpiler/output/codegen/assignment/handlers/BitAccessHandlers.ts +27 -33
  22. package/src/transpiler/output/codegen/assignment/handlers/BitmapHandlers.ts +39 -42
  23. package/src/transpiler/output/codegen/assignment/handlers/RegisterHandlers.ts +39 -97
  24. package/src/transpiler/output/codegen/assignment/handlers/RegisterUtils.ts +75 -0
  25. package/src/transpiler/output/codegen/assignment/handlers/SimpleHandler.ts +9 -6
  26. package/src/transpiler/output/codegen/assignment/handlers/SpecialHandlers.ts +30 -22
  27. package/src/transpiler/output/codegen/assignment/handlers/StringHandlers.ts +42 -50
  28. package/src/transpiler/output/codegen/assignment/handlers/TAssignmentHandler.ts +6 -5
  29. package/src/transpiler/output/codegen/assignment/handlers/__tests__/AccessPatternHandlers.test.ts +81 -134
  30. package/src/transpiler/output/codegen/assignment/handlers/__tests__/ArrayHandlers.test.ts +85 -124
  31. package/src/transpiler/output/codegen/assignment/handlers/__tests__/BitAccessHandlers.test.ts +82 -124
  32. package/src/transpiler/output/codegen/assignment/handlers/__tests__/BitmapHandlers.test.ts +135 -297
  33. package/src/transpiler/output/codegen/assignment/handlers/__tests__/RegisterHandlers.test.ts +105 -227
  34. package/src/transpiler/output/codegen/assignment/handlers/__tests__/RegisterUtils.test.ts +214 -1
  35. package/src/transpiler/output/codegen/assignment/handlers/__tests__/SpecialHandlers.test.ts +66 -127
  36. package/src/transpiler/output/codegen/assignment/handlers/__tests__/StringHandlers.test.ts +37 -83
  37. package/src/transpiler/output/codegen/assignment/handlers/__tests__/handlerTestUtils.ts +162 -0
  38. package/src/transpiler/output/codegen/generators/expressions/PostfixExpressionGenerator.ts +618 -12
  39. package/src/transpiler/output/codegen/generators/expressions/__tests__/PostfixExpressionGenerator.test.ts +819 -0
  40. package/src/transpiler/output/codegen/helpers/ArrayInitHelper.ts +1 -1
  41. package/src/transpiler/output/codegen/helpers/AssignmentExpectedTypeResolver.ts +1 -1
  42. package/src/transpiler/output/codegen/helpers/AssignmentValidator.ts +1 -1
  43. package/src/transpiler/output/codegen/helpers/CppModeHelper.ts +1 -1
  44. package/src/transpiler/output/codegen/helpers/EnumAssignmentValidator.ts +1 -1
  45. package/src/transpiler/output/codegen/helpers/FloatBitHelper.ts +1 -1
  46. package/src/transpiler/output/codegen/helpers/ParameterInputAdapter.ts +337 -0
  47. package/src/transpiler/output/codegen/helpers/ParameterSignatureBuilder.ts +135 -0
  48. package/src/transpiler/output/codegen/helpers/StringDeclHelper.ts +1 -1
  49. package/src/transpiler/output/codegen/helpers/VariableDeclarationFormatter.ts +118 -0
  50. package/src/transpiler/output/codegen/helpers/__tests__/ArrayInitHelper.test.ts +1 -1
  51. package/src/transpiler/output/codegen/helpers/__tests__/AssignmentExpectedTypeResolver.test.ts +1 -1
  52. package/src/transpiler/output/codegen/helpers/__tests__/AssignmentValidator.test.ts +1 -1
  53. package/src/transpiler/output/codegen/helpers/__tests__/CppModeHelper.test.ts +1 -1
  54. package/src/transpiler/output/codegen/helpers/__tests__/EnumAssignmentValidator.test.ts +1 -1
  55. package/src/transpiler/output/codegen/helpers/__tests__/FloatBitHelper.test.ts +1 -1
  56. package/src/transpiler/output/codegen/helpers/__tests__/ParameterInputAdapter.test.ts +426 -0
  57. package/src/transpiler/output/codegen/helpers/__tests__/ParameterSignatureBuilder.test.ts +315 -0
  58. package/src/transpiler/output/codegen/helpers/__tests__/StringDeclHelper.test.ts +1 -1
  59. package/src/transpiler/output/codegen/helpers/__tests__/VariableDeclarationFormatter.test.ts +333 -0
  60. package/src/transpiler/output/codegen/resolution/EnumTypeResolver.ts +1 -1
  61. package/src/transpiler/output/codegen/resolution/ScopeResolver.ts +1 -1
  62. package/src/transpiler/output/codegen/resolution/SizeofResolver.ts +1 -1
  63. package/src/transpiler/output/codegen/resolution/__tests__/EnumTypeResolver.test.ts +1 -1
  64. package/src/transpiler/output/codegen/resolution/__tests__/SizeofResolver.test.ts +1 -1
  65. package/src/transpiler/output/codegen/types/ICodeGenApi.ts +57 -0
  66. package/src/transpiler/output/codegen/types/IParameterInput.ts +58 -0
  67. package/src/transpiler/output/codegen/types/IVariableFormatInput.ts +51 -0
  68. package/src/transpiler/output/headers/BaseHeaderGenerator.ts +20 -35
  69. package/src/transpiler/output/headers/HeaderGeneratorUtils.ts +21 -48
  70. package/src/transpiler/output/headers/__tests__/HeaderGeneratorUtils.test.ts +0 -64
  71. package/src/transpiler/{output/codegen → state}/CodeGenState.ts +46 -26
  72. package/src/transpiler/{output/codegen → state}/__tests__/CodeGenState.test.ts +12 -2
  73. package/src/transpiler/output/codegen/assignment/handlers/IHandlerDeps.ts +0 -161
@@ -3,40 +3,12 @@
3
3
  * Tests the string assignment handler functions.
4
4
  */
5
5
 
6
- import { describe, expect, it, vi } from "vitest";
6
+ import { beforeEach, describe, expect, it } from "vitest";
7
7
  import stringHandlers from "../StringHandlers";
8
8
  import AssignmentKind from "../../AssignmentKind";
9
9
  import IAssignmentContext from "../../IAssignmentContext";
10
- import IHandlerDeps from "../IHandlerDeps";
11
-
12
- /**
13
- * Create mock dependencies for testing.
14
- * Uses type casting to allow partial mocks for testing.
15
- */
16
- function createMockDeps(overrides: Record<string, unknown> = {}): IHandlerDeps {
17
- const base = {
18
- typeRegistry: new Map(),
19
- symbols: {
20
- structFields: new Map(),
21
- structFieldDimensions: new Map(),
22
- registerMemberAccess: new Map(),
23
- registerBaseAddresses: new Map(),
24
- registerMemberOffsets: new Map(),
25
- },
26
- currentScope: undefined,
27
- generateAssignmentTarget: vi.fn().mockReturnValue("target"),
28
- generateExpression: vi.fn().mockReturnValue("0"),
29
- markNeedsString: vi.fn(),
30
- isKnownScope: vi.fn().mockReturnValue(false),
31
- validateCrossScopeVisibility: vi.fn(),
32
- analyzeMemberChainForBitAccess: vi.fn().mockReturnValue({
33
- isBitAccess: false,
34
- }),
35
- tryEvaluateConstant: vi.fn().mockReturnValue(undefined),
36
- ...overrides,
37
- };
38
- return base as unknown as IHandlerDeps;
39
- }
10
+ import CodeGenState from "../../../../../state/CodeGenState";
11
+ import HandlerTestUtils from "./handlerTestUtils";
40
12
 
41
13
  /**
42
14
  * Create mock context for testing
@@ -57,6 +29,12 @@ function createMockContext(
57
29
  }
58
30
 
59
31
  describe("StringHandlers", () => {
32
+ beforeEach(() => {
33
+ CodeGenState.reset();
34
+ HandlerTestUtils.setupMockGenerator();
35
+ HandlerTestUtils.setupMockSymbols();
36
+ });
37
+
60
38
  describe("handler registration", () => {
61
39
  it("registers all expected string assignment kinds", () => {
62
40
  const kinds = stringHandlers.map(([kind]) => kind);
@@ -83,35 +61,33 @@ describe("StringHandlers", () => {
83
61
 
84
62
  describe("handleSimpleStringAssignment (STRING_SIMPLE)", () => {
85
63
  it("generates strncpy with null terminator", () => {
86
- const typeRegistry = new Map([
64
+ HandlerTestUtils.setupMockTypeRegistry([
87
65
  ["testVar", { stringCapacity: 32, baseType: "string" }],
88
66
  ]);
89
- const deps = createMockDeps({ typeRegistry });
90
67
  const ctx = createMockContext();
91
68
 
92
69
  const handler = stringHandlers.find(
93
70
  ([kind]) => kind === AssignmentKind.STRING_SIMPLE,
94
71
  )?.[1];
95
- const result = handler!(ctx, deps);
72
+ const result = handler!(ctx);
96
73
 
97
74
  expect(result).toContain("strncpy");
98
75
  expect(result).toContain("target");
99
76
  expect(result).toContain("32");
100
- expect(deps.markNeedsString).toHaveBeenCalled();
77
+ expect(CodeGenState.needsString).toBe(true);
101
78
  });
102
79
 
103
80
  it("throws on compound assignment", () => {
104
- const typeRegistry = new Map([
81
+ HandlerTestUtils.setupMockTypeRegistry([
105
82
  ["testVar", { stringCapacity: 32, baseType: "string" }],
106
83
  ]);
107
- const deps = createMockDeps({ typeRegistry });
108
84
  const ctx = createMockContext({ isCompound: true, cnextOp: "+<-" });
109
85
 
110
86
  const handler = stringHandlers.find(
111
87
  ([kind]) => kind === AssignmentKind.STRING_SIMPLE,
112
88
  )?.[1];
113
89
 
114
- expect(() => handler!(ctx, deps)).toThrow(
90
+ expect(() => handler!(ctx)).toThrow(
115
91
  "Compound operators not supported for string assignment",
116
92
  );
117
93
  });
@@ -119,34 +95,31 @@ describe("StringHandlers", () => {
119
95
 
120
96
  describe("handleStringThisMember (STRING_THIS_MEMBER)", () => {
121
97
  it("generates strncpy for scoped member", () => {
122
- const typeRegistry = new Map([
98
+ CodeGenState.currentScope = "TestScope";
99
+ HandlerTestUtils.setupMockTypeRegistry([
123
100
  ["TestScope_memberName", { stringCapacity: 64, baseType: "string" }],
124
101
  ]);
125
- const deps = createMockDeps({
126
- typeRegistry,
127
- currentScope: "TestScope",
128
- });
129
102
  const ctx = createMockContext({ identifiers: ["memberName"] });
130
103
 
131
104
  const handler = stringHandlers.find(
132
105
  ([kind]) => kind === AssignmentKind.STRING_THIS_MEMBER,
133
106
  )?.[1];
134
- const result = handler!(ctx, deps);
107
+ const result = handler!(ctx);
135
108
 
136
109
  expect(result).toContain("strncpy");
137
110
  expect(result).toContain("64");
138
- expect(deps.markNeedsString).toHaveBeenCalled();
111
+ expect(CodeGenState.needsString).toBe(true);
139
112
  });
140
113
 
141
114
  it("throws when used outside scope", () => {
142
- const deps = createMockDeps({ currentScope: undefined });
115
+ CodeGenState.currentScope = null;
143
116
  const ctx = createMockContext();
144
117
 
145
118
  const handler = stringHandlers.find(
146
119
  ([kind]) => kind === AssignmentKind.STRING_THIS_MEMBER,
147
120
  )?.[1];
148
121
 
149
- expect(() => handler!(ctx, deps)).toThrow(
122
+ expect(() => handler!(ctx)).toThrow(
150
123
  "'this' can only be used inside a scope",
151
124
  );
152
125
  });
@@ -154,42 +127,31 @@ describe("StringHandlers", () => {
154
127
 
155
128
  describe("handleStringStructField (STRING_STRUCT_FIELD)", () => {
156
129
  it("generates strncpy for struct field", () => {
157
- const typeRegistry = new Map([
158
- ["person", { baseType: "Person", stringCapacity: undefined }],
130
+ HandlerTestUtils.setupMockTypeRegistry([
131
+ ["person", { baseType: "Person" }],
159
132
  ]);
160
- const structFields = new Map([
161
- ["Person", new Map([["name", "string<50>"]])],
162
- ]);
163
- const deps = createMockDeps({
164
- typeRegistry,
165
- symbols: {
166
- structFields,
167
- structFieldDimensions: new Map(),
168
- registerMemberAccess: new Map(),
169
- registerBaseAddresses: new Map(),
170
- registerMemberOffsets: new Map(),
171
- },
133
+ HandlerTestUtils.setupMockSymbols({
134
+ structFields: new Map([["Person", new Map([["name", "string<50>"]])]]),
172
135
  });
173
136
  const ctx = createMockContext({ identifiers: ["person", "name"] });
174
137
 
175
138
  const handler = stringHandlers.find(
176
139
  ([kind]) => kind === AssignmentKind.STRING_STRUCT_FIELD,
177
140
  )?.[1];
178
- const result = handler!(ctx, deps);
141
+ const result = handler!(ctx);
179
142
 
180
143
  expect(result).toContain("strncpy");
181
144
  expect(result).toContain("person");
182
145
  expect(result).toContain("name");
183
- expect(deps.markNeedsString).toHaveBeenCalled();
146
+ expect(CodeGenState.needsString).toBe(true);
184
147
  });
185
148
  });
186
149
 
187
150
  describe("handleStringArrayElement (STRING_ARRAY_ELEMENT)", () => {
188
151
  it("generates strncpy for array element", () => {
189
- const typeRegistry = new Map([
152
+ HandlerTestUtils.setupMockTypeRegistry([
190
153
  ["names", { stringCapacity: 20, baseType: "string" }],
191
154
  ]);
192
- const deps = createMockDeps({ typeRegistry });
193
155
  const ctx = createMockContext({
194
156
  identifiers: ["names"],
195
157
  subscripts: [{} as never],
@@ -198,32 +160,24 @@ describe("StringHandlers", () => {
198
160
  const handler = stringHandlers.find(
199
161
  ([kind]) => kind === AssignmentKind.STRING_ARRAY_ELEMENT,
200
162
  )?.[1];
201
- const result = handler!(ctx, deps);
163
+ const result = handler!(ctx);
202
164
 
203
165
  expect(result).toContain("strncpy");
204
166
  expect(result).toContain("names");
205
167
  expect(result).toContain("20");
206
- expect(deps.markNeedsString).toHaveBeenCalled();
168
+ expect(CodeGenState.needsString).toBe(true);
207
169
  });
208
170
  });
209
171
 
210
172
  describe("handleStringStructArrayElement (STRING_STRUCT_ARRAY_ELEMENT)", () => {
211
173
  it("generates strncpy for struct field array element", () => {
212
- const typeRegistry = new Map([
213
- ["config", { baseType: "Config", stringCapacity: undefined }],
214
- ]);
215
- const structFieldDimensions = new Map([
216
- ["Config", new Map([["items", [10, 33]]])], // 10 items, capacity 32+1
174
+ HandlerTestUtils.setupMockTypeRegistry([
175
+ ["config", { baseType: "Config" }],
217
176
  ]);
218
- const deps = createMockDeps({
219
- typeRegistry,
220
- symbols: {
221
- structFields: new Map(),
222
- structFieldDimensions,
223
- registerMemberAccess: new Map(),
224
- registerBaseAddresses: new Map(),
225
- registerMemberOffsets: new Map(),
226
- },
177
+ HandlerTestUtils.setupMockSymbols({
178
+ structFieldDimensions: new Map([
179
+ ["Config", new Map([["items", [10, 33]]])], // 10 items, capacity 32+1
180
+ ]),
227
181
  });
228
182
  const ctx = createMockContext({
229
183
  identifiers: ["config", "items"],
@@ -233,14 +187,14 @@ describe("StringHandlers", () => {
233
187
  const handler = stringHandlers.find(
234
188
  ([kind]) => kind === AssignmentKind.STRING_STRUCT_ARRAY_ELEMENT,
235
189
  )?.[1];
236
- const result = handler!(ctx, deps);
190
+ const result = handler!(ctx);
237
191
 
238
192
  expect(result).toContain("strncpy");
239
193
  expect(result).toContain("config");
240
194
  expect(result).toContain("items");
241
195
  // Capacity should be 33 - 1 = 32
242
196
  expect(result).toContain("32");
243
- expect(deps.markNeedsString).toHaveBeenCalled();
197
+ expect(CodeGenState.needsString).toBe(true);
244
198
  });
245
199
  });
246
200
  });
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Shared test utilities for assignment handler tests.
3
+ * Provides common mock setup functions to reduce duplication.
4
+ */
5
+
6
+ import { vi } from "vitest";
7
+ import CodeGenState from "../../../../../state/CodeGenState";
8
+ import type ICodeGenApi from "../../../types/ICodeGenApi";
9
+ import type ICodeGenSymbols from "../../../../../types/ICodeGenSymbols";
10
+ import type TTypeInfo from "../../../types/TTypeInfo";
11
+
12
+ /**
13
+ * Default mock symbols with all required ICodeGenSymbols fields.
14
+ * Override specific fields as needed for individual tests.
15
+ */
16
+ function createDefaultMockSymbols(): ICodeGenSymbols {
17
+ return {
18
+ // Known type names
19
+ knownScopes: new Set(),
20
+ knownStructs: new Set(),
21
+ knownRegisters: new Set(),
22
+ knownEnums: new Set(),
23
+ knownBitmaps: new Set(),
24
+
25
+ // Scope information
26
+ scopeMembers: new Map(),
27
+ scopeMemberVisibility: new Map(),
28
+
29
+ // Struct information
30
+ structFields: new Map(),
31
+ structFieldArrays: new Map(),
32
+ structFieldDimensions: new Map(),
33
+
34
+ // Enum information
35
+ enumMembers: new Map(),
36
+
37
+ // Bitmap information
38
+ bitmapFields: new Map(),
39
+ bitmapBackingType: new Map(),
40
+ bitmapBitWidth: new Map(),
41
+
42
+ // Register information
43
+ scopedRegisters: new Map(),
44
+ registerMemberAccess: new Map(),
45
+ registerMemberTypes: new Map(),
46
+ registerBaseAddresses: new Map(),
47
+ registerMemberOffsets: new Map(),
48
+ registerMemberCTypes: new Map(),
49
+
50
+ // Scope variable analysis
51
+ scopeVariableUsage: new Map(),
52
+ scopePrivateConstValues: new Map(),
53
+
54
+ // Function return types
55
+ functionReturnTypes: new Map(),
56
+
57
+ // Methods
58
+ getSingleFunctionForVariable: () => null,
59
+ hasPublicSymbols: () => false,
60
+ };
61
+ }
62
+
63
+ /**
64
+ * Set up mock symbols on CodeGenState.
65
+ * Provides comprehensive defaults that can be overridden.
66
+ */
67
+ function setupMockSymbols(overrides: Partial<ICodeGenSymbols> = {}): void {
68
+ CodeGenState.symbols = {
69
+ ...createDefaultMockSymbols(),
70
+ ...overrides,
71
+ };
72
+ }
73
+
74
+ /**
75
+ * Set up mock generator on CodeGenState.
76
+ * Common generator methods are pre-mocked with sensible defaults.
77
+ */
78
+ function setupMockGenerator(overrides: Record<string, unknown> = {}): void {
79
+ CodeGenState.generator = {
80
+ generateAssignmentTarget: vi.fn().mockReturnValue("target"),
81
+ generateExpression: vi
82
+ .fn()
83
+ .mockImplementation((ctx) => ctx?.mockValue ?? "0"),
84
+ tryEvaluateConstant: vi.fn().mockReturnValue(undefined),
85
+ validateBitmapFieldLiteral: vi.fn(),
86
+ validateCrossScopeVisibility: vi.fn(),
87
+ getMemberTypeInfo: vi.fn().mockReturnValue(null),
88
+ checkArrayBounds: vi.fn(),
89
+ analyzeMemberChainForBitAccess: vi
90
+ .fn()
91
+ .mockReturnValue({ isBitAccess: false }),
92
+ generateFloatBitWrite: vi.fn().mockReturnValue(null),
93
+ generateAtomicRMW: vi.fn().mockReturnValue("atomic_rmw_result"),
94
+ isKnownScope: vi.fn().mockReturnValue(false),
95
+ isKnownStruct: vi.fn().mockReturnValue(false),
96
+ ...overrides,
97
+ } as unknown as ICodeGenApi;
98
+ }
99
+
100
+ /**
101
+ * Combined setup for both symbols and generator.
102
+ * Convenience function for tests that need both.
103
+ */
104
+ function setupMockState(
105
+ symbolOverrides: Partial<ICodeGenSymbols> = {},
106
+ generatorOverrides: Record<string, unknown> = {},
107
+ ): void {
108
+ setupMockSymbols(symbolOverrides);
109
+ setupMockGenerator(generatorOverrides);
110
+ }
111
+
112
+ /** Common type bit widths for test mocks */
113
+ const TYPE_BIT_WIDTHS: Record<string, number> = {
114
+ u8: 8,
115
+ i8: 8,
116
+ u16: 16,
117
+ i16: 16,
118
+ u32: 32,
119
+ i32: 32,
120
+ u64: 64,
121
+ i64: 64,
122
+ f32: 32,
123
+ f64: 64,
124
+ bool: 1,
125
+ string: 0,
126
+ };
127
+
128
+ /**
129
+ * Create a TTypeInfo with sensible defaults.
130
+ * Only override the fields you care about in tests.
131
+ */
132
+ function createTypeInfo(overrides: Partial<TTypeInfo> = {}): TTypeInfo {
133
+ const baseType = overrides.baseType ?? "u32";
134
+ return {
135
+ baseType,
136
+ bitWidth: overrides.bitWidth ?? TYPE_BIT_WIDTHS[baseType] ?? 32,
137
+ isArray: overrides.isArray ?? false,
138
+ isConst: overrides.isConst ?? false,
139
+ ...overrides,
140
+ };
141
+ }
142
+
143
+ /**
144
+ * Set up CodeGenState.typeRegistry with typed entries.
145
+ * Entries only need to specify the fields relevant to the test.
146
+ */
147
+ function setupMockTypeRegistry(
148
+ entries: Array<[string, Partial<TTypeInfo>]>,
149
+ ): void {
150
+ CodeGenState.typeRegistry = new Map(
151
+ entries.map(([name, partial]) => [name, createTypeInfo(partial)]),
152
+ );
153
+ }
154
+
155
+ export default class HandlerTestUtils {
156
+ static readonly setupMockSymbols = setupMockSymbols;
157
+ static readonly setupMockGenerator = setupMockGenerator;
158
+ static readonly setupMockState = setupMockState;
159
+ static readonly createDefaultMockSymbols = createDefaultMockSymbols;
160
+ static readonly createTypeInfo = createTypeInfo;
161
+ static readonly setupMockTypeRegistry = setupMockTypeRegistry;
162
+ }