Skip to content

Commit 3aaf8dd

Browse files
committed
Changed standard inclusion data type
1 parent 063bddc commit 3aaf8dd

File tree

4 files changed

+22
-20
lines changed

4 files changed

+22
-20
lines changed

packages/cli/src/languagePlugins/c/dependencyFormatting/index.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,9 @@ export class CDependencyFormatter {
5858
return dependencies;
5959
}
6060

61-
#formatStandardIncludes(
62-
stdincludes: Parser.SyntaxNode[],
63-
): Record<string, CDependency> {
61+
#formatStandardIncludes(stdincludes: string[]): Record<string, CDependency> {
6462
const dependencies: Record<string, CDependency> = {};
65-
for (const include of stdincludes) {
66-
const id = include.childForFieldName("path").text;
63+
for (const id of stdincludes) {
6764
if (!dependencies[id]) {
6865
dependencies[id] = {
6966
id: id,
@@ -114,7 +111,7 @@ export class CDependencyFormatter {
114111
const fileDependencies =
115112
this.invocationResolver.getInvocationsForFile(filepath);
116113
const includes = this.includeResolver.getInclusions().get(filepath);
117-
const stdincludes = includes.standard;
114+
const stdincludes = Array.from(includes.standard.keys());
118115
const invokedDependencies = this.#formatDependencies(fileDependencies);
119116
const stdDependencies = this.#formatStandardIncludes(stdincludes);
120117
const allDependencies = {

packages/cli/src/languagePlugins/c/includeResolver/index.test.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ describe("CIncludeResolver", () => {
2121
expect(bhinclusions.filepath).toBe(burgersh);
2222
expect(bhinclusions.symbols.size).toBe(0);
2323
expect(bhinclusions.internal.length).toBe(0);
24-
expect(bhinclusions.standard.length).toBe(1);
25-
expect(bhinclusions.standard[0].text.trim()).toBe("#include <stdbool.h>");
24+
expect(bhinclusions.standard.size).toBe(1);
25+
expect(Array.from(bhinclusions.standard.keys())[0]).toBe("<stdbool.h>");
2626
});
2727

2828
test("resolves inclusions for burgers.c", () => {
@@ -34,11 +34,11 @@ describe("CIncludeResolver", () => {
3434
expect(bcinclusions.symbols.size).toBe(16);
3535
expect(bcinclusions.internal.length).toBe(1);
3636
expect(bcinclusions.internal[0]).toBe("burgers.h");
37-
expect(bcinclusions.standard.length).toBe(3);
38-
const stdincludes = bcinclusions.standard.map((node) => node.text.trim());
39-
expect(stdincludes).toContain("#include <stdio.h>");
40-
expect(stdincludes).toContain("#include <stdlib.h>");
41-
expect(stdincludes).toContain("#include <string.h>");
37+
expect(bcinclusions.standard.size).toBe(4);
38+
const stdincludes = Array.from(bcinclusions.standard.keys());
39+
expect(stdincludes).toContain("<stdio.h>");
40+
expect(stdincludes).toContain("<stdlib.h>");
41+
expect(stdincludes).toContain("<string.h>");
4242
});
4343

4444
test("resolves inclusions for main.c", () => {
@@ -51,8 +51,8 @@ describe("CIncludeResolver", () => {
5151
expect(maininclusions.internal.length).toBe(2);
5252
expect(maininclusions.internal).toContain("burgers.h");
5353
expect(maininclusions.internal).toContain("personnel.h");
54-
expect(maininclusions.standard.length).toBe(1);
55-
const stdincludes = maininclusions.standard.map((node) => node.text.trim());
56-
expect(stdincludes).toContain("#include <stdio.h>");
54+
expect(maininclusions.standard.size).toBe(2);
55+
const stdincludes = Array.from(maininclusions.standard.keys());
56+
expect(stdincludes).toContain("<stdio.h>");
5757
});
5858
});

packages/cli/src/languagePlugins/c/includeResolver/index.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export class CIncludeResolver {
4646
filepath: file.path,
4747
symbols: new Map(),
4848
internal: [],
49-
standard: [],
49+
standard: new Map(),
5050
};
5151

5252
// Add the current file to the visited set to prevent infinite recursion
@@ -75,12 +75,17 @@ export class CIncludeResolver {
7575
inclusions.symbols.set(name, symbol);
7676
}
7777
inclusions.internal.push(...nestedInclusions.internal);
78-
inclusions.standard.push(...nestedInclusions.standard);
78+
for (const node of nestedInclusions.standard) {
79+
inclusions.standard.set(node[0], node[1]);
80+
}
7981
}
8082
}
8183

8284
for (const node of standardIncludeNodes) {
83-
inclusions.standard.push(node.node);
85+
inclusions.standard.set(
86+
node.node.childForFieldName("path").text,
87+
node.node,
88+
);
8489
}
8590

8691
return inclusions;

packages/cli/src/languagePlugins/c/includeResolver/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ export interface Inclusions {
1010
/** The list of the paths of the internal imports */
1111
internal: string[];
1212
/** The list of include directives of the standard imports */
13-
standard: Parser.SyntaxNode[];
13+
standard: Map<string, Parser.SyntaxNode>;
1414
}

0 commit comments

Comments
 (0)