@liendev/parser 0.40.0 → 0.42.0
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/README.md +3 -2
- package/dist/ast/languages/go.d.ts +99 -0
- package/dist/ast/languages/go.d.ts.map +1 -0
- package/dist/ast/languages/go.js +546 -0
- package/dist/ast/languages/go.js.map +1 -0
- package/dist/ast/languages/java.d.ts +100 -0
- package/dist/ast/languages/java.d.ts.map +1 -0
- package/dist/ast/languages/java.js +547 -0
- package/dist/ast/languages/java.js.map +1 -0
- package/dist/ast/languages/registry.d.ts +1 -1
- package/dist/ast/languages/registry.d.ts.map +1 -1
- package/dist/ast/languages/registry.js +13 -1
- package/dist/ast/languages/registry.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"go.js","sourceRoot":"","sources":["../../../src/ast/languages/go.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type Parser from 'tree-sitter';
|
|
2
|
+
import type { SymbolInfo } from '../types.js';
|
|
3
|
+
import type { LanguageDefinition } from './types.js';
|
|
4
|
+
import type { LanguageTraverser, DeclarationFunctionInfo } from '../traversers/types.js';
|
|
5
|
+
import type { LanguageExportExtractor, LanguageImportExtractor, LanguageSymbolExtractor } from '../extractors/types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Java AST traverser
|
|
8
|
+
*
|
|
9
|
+
* Java has a class-based container structure — methods live inside class,
|
|
10
|
+
* interface, enum, and record declarations. Unlike Go's flat structure,
|
|
11
|
+
* Java requires container traversal to find methods.
|
|
12
|
+
*
|
|
13
|
+
* Lambda expressions can appear in variable declarations:
|
|
14
|
+
* Runnable r = () -> { ... };
|
|
15
|
+
*/
|
|
16
|
+
export declare class JavaTraverser implements LanguageTraverser {
|
|
17
|
+
targetNodeTypes: string[];
|
|
18
|
+
containerTypes: string[];
|
|
19
|
+
declarationTypes: string[];
|
|
20
|
+
functionTypes: string[];
|
|
21
|
+
shouldExtractChildren(node: Parser.SyntaxNode): boolean;
|
|
22
|
+
isDeclarationWithFunction(node: Parser.SyntaxNode): boolean;
|
|
23
|
+
getContainerBody(node: Parser.SyntaxNode): Parser.SyntaxNode | null;
|
|
24
|
+
shouldTraverseChildren(node: Parser.SyntaxNode): boolean;
|
|
25
|
+
findParentContainerName(node: Parser.SyntaxNode): string | undefined;
|
|
26
|
+
findFunctionInDeclaration(node: Parser.SyntaxNode): DeclarationFunctionInfo;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Java export extractor
|
|
30
|
+
*
|
|
31
|
+
* Java uses the `public` modifier for visibility — public declarations are
|
|
32
|
+
* accessible outside the package (similar to Rust's `pub`).
|
|
33
|
+
*
|
|
34
|
+
* Exportable items:
|
|
35
|
+
* - public class User {}
|
|
36
|
+
* - public interface Repository {}
|
|
37
|
+
* - public enum Status {}
|
|
38
|
+
* - public record Point(int x, int y) {}
|
|
39
|
+
* - public void method() {} (inside a class)
|
|
40
|
+
* - Interface methods are implicitly public
|
|
41
|
+
*
|
|
42
|
+
* Package-private (default access) declarations are NOT exported.
|
|
43
|
+
*/
|
|
44
|
+
export declare class JavaExportExtractor implements LanguageExportExtractor {
|
|
45
|
+
extractExports(rootNode: Parser.SyntaxNode): string[];
|
|
46
|
+
private extractFromNode;
|
|
47
|
+
private extractPublicMembers;
|
|
48
|
+
private extractMemberExport;
|
|
49
|
+
private extractFieldNames;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Java import extractor
|
|
53
|
+
*
|
|
54
|
+
* Handles all Java import patterns:
|
|
55
|
+
* - import com.example.MyClass; (single import)
|
|
56
|
+
* - import com.example.*; (wildcard import)
|
|
57
|
+
* - import static com.example.Utils.method; (static import)
|
|
58
|
+
* - import static com.example.Utils.*; (static wildcard import)
|
|
59
|
+
*
|
|
60
|
+
* Standard library imports (java.*, javax.*) are filtered out.
|
|
61
|
+
*/
|
|
62
|
+
export declare class JavaImportExtractor implements LanguageImportExtractor {
|
|
63
|
+
readonly importNodeTypes: string[];
|
|
64
|
+
extractImportPath(node: Parser.SyntaxNode): string | null;
|
|
65
|
+
processImportSymbols(node: Parser.SyntaxNode): {
|
|
66
|
+
importPath: string;
|
|
67
|
+
symbols: string[];
|
|
68
|
+
} | null;
|
|
69
|
+
private getImportPath;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Java symbol extractor
|
|
73
|
+
*
|
|
74
|
+
* Handles:
|
|
75
|
+
* - method_declaration (public void method() {})
|
|
76
|
+
* - constructor_declaration (public MyClass() {})
|
|
77
|
+
* - class_declaration (class MyClass {})
|
|
78
|
+
* - interface_declaration (interface MyInterface {})
|
|
79
|
+
* - enum_declaration (enum MyEnum {})
|
|
80
|
+
* - record_declaration (record MyRecord(int x) {})
|
|
81
|
+
*
|
|
82
|
+
* Call sites: method_invocation (direct calls and object.method() calls)
|
|
83
|
+
*/
|
|
84
|
+
export declare class JavaSymbolExtractor implements LanguageSymbolExtractor {
|
|
85
|
+
readonly symbolNodeTypes: string[];
|
|
86
|
+
extractSymbol(node: Parser.SyntaxNode, content: string, parentClass?: string): SymbolInfo | null;
|
|
87
|
+
extractCallSite(node: Parser.SyntaxNode): {
|
|
88
|
+
symbol: string;
|
|
89
|
+
line: number;
|
|
90
|
+
key: string;
|
|
91
|
+
} | null;
|
|
92
|
+
private extractMethodInfo;
|
|
93
|
+
private extractConstructorInfo;
|
|
94
|
+
private extractClassInfo;
|
|
95
|
+
private extractInterfaceInfo;
|
|
96
|
+
private extractEnumInfo;
|
|
97
|
+
private extractRecordInfo;
|
|
98
|
+
}
|
|
99
|
+
export declare const javaDefinition: LanguageDefinition;
|
|
100
|
+
//# sourceMappingURL=java.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"java.d.ts","sourceRoot":"","sources":["../../../src/ast/languages/java.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,wBAAwB,CAAC;AAQhC;;;;;;;;;GASG;AACH,qBAAa,aAAc,YAAW,iBAAiB;IACrD,eAAe,WAAqD;IAEpE,cAAc,WAKZ;IAEF,gBAAgB,WAAkC;IAElD,aAAa,WAAyB;IAEtC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO;IAIvD,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO;IAK3D,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI;IAOnE,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO;IASxD,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,SAAS;IAiBpE,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,uBAAuB;CAS5E;AAMD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,mBAAoB,YAAW,uBAAuB;IACjE,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE;IAoBrD,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,iBAAiB;CAS1B;AAcD;;;;;;;;;;GAUG;AACH,qBAAa,mBAAoB,YAAW,uBAAuB;IACjE,QAAQ,CAAC,eAAe,WAA0B;IAElD,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI;IAMzD,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI;IAiB/F,OAAO,CAAC,aAAa;CAatB;AAMD;;;;;;;;;;;;GAYG;AACH,qBAAa,mBAAoB,YAAW,uBAAuB;IACjE,QAAQ,CAAC,eAAe,WAOtB;IAEF,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAmBhG,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAqB9F,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,iBAAiB;CAY1B;AA+DD,eAAO,MAAM,cAAc,EAAE,kBAgI5B,CAAC"}
|
|
@@ -0,0 +1,547 @@
|
|
|
1
|
+
import Java from 'tree-sitter-java';
|
|
2
|
+
import { extractSignature, extractParameters } from '../extractors/symbol-helpers.js';
|
|
3
|
+
import { calculateComplexity } from '../complexity/index.js';
|
|
4
|
+
// =============================================================================
|
|
5
|
+
// TRAVERSER
|
|
6
|
+
// =============================================================================
|
|
7
|
+
/**
|
|
8
|
+
* Java AST traverser
|
|
9
|
+
*
|
|
10
|
+
* Java has a class-based container structure — methods live inside class,
|
|
11
|
+
* interface, enum, and record declarations. Unlike Go's flat structure,
|
|
12
|
+
* Java requires container traversal to find methods.
|
|
13
|
+
*
|
|
14
|
+
* Lambda expressions can appear in variable declarations:
|
|
15
|
+
* Runnable r = () -> { ... };
|
|
16
|
+
*/
|
|
17
|
+
export class JavaTraverser {
|
|
18
|
+
targetNodeTypes = ['method_declaration', 'constructor_declaration'];
|
|
19
|
+
containerTypes = [
|
|
20
|
+
'class_declaration',
|
|
21
|
+
'interface_declaration',
|
|
22
|
+
'enum_declaration',
|
|
23
|
+
'record_declaration',
|
|
24
|
+
];
|
|
25
|
+
declarationTypes = ['local_variable_declaration'];
|
|
26
|
+
functionTypes = ['lambda_expression'];
|
|
27
|
+
shouldExtractChildren(node) {
|
|
28
|
+
return this.containerTypes.includes(node.type);
|
|
29
|
+
}
|
|
30
|
+
isDeclarationWithFunction(node) {
|
|
31
|
+
if (node.type !== 'local_variable_declaration')
|
|
32
|
+
return false;
|
|
33
|
+
return findDescendant(node, 'lambda_expression') !== null;
|
|
34
|
+
}
|
|
35
|
+
getContainerBody(node) {
|
|
36
|
+
if (this.containerTypes.includes(node.type)) {
|
|
37
|
+
return node.childForFieldName('body');
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
shouldTraverseChildren(node) {
|
|
42
|
+
return (node.type === 'program' ||
|
|
43
|
+
node.type === 'class_body' ||
|
|
44
|
+
node.type === 'interface_body' ||
|
|
45
|
+
node.type === 'enum_body');
|
|
46
|
+
}
|
|
47
|
+
findParentContainerName(node) {
|
|
48
|
+
let current = node.parent;
|
|
49
|
+
while (current) {
|
|
50
|
+
if (current.type === 'class_declaration' ||
|
|
51
|
+
current.type === 'interface_declaration' ||
|
|
52
|
+
current.type === 'enum_declaration' ||
|
|
53
|
+
current.type === 'record_declaration') {
|
|
54
|
+
const nameNode = current.childForFieldName('name');
|
|
55
|
+
return nameNode?.text;
|
|
56
|
+
}
|
|
57
|
+
current = current.parent;
|
|
58
|
+
}
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
findFunctionInDeclaration(node) {
|
|
62
|
+
if (node.type !== 'local_variable_declaration') {
|
|
63
|
+
return { hasFunction: false, functionNode: null };
|
|
64
|
+
}
|
|
65
|
+
const lambda = findDescendant(node, 'lambda_expression');
|
|
66
|
+
return lambda
|
|
67
|
+
? { hasFunction: true, functionNode: lambda }
|
|
68
|
+
: { hasFunction: false, functionNode: null };
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// =============================================================================
|
|
72
|
+
// EXPORT EXTRACTOR
|
|
73
|
+
// =============================================================================
|
|
74
|
+
/**
|
|
75
|
+
* Java export extractor
|
|
76
|
+
*
|
|
77
|
+
* Java uses the `public` modifier for visibility — public declarations are
|
|
78
|
+
* accessible outside the package (similar to Rust's `pub`).
|
|
79
|
+
*
|
|
80
|
+
* Exportable items:
|
|
81
|
+
* - public class User {}
|
|
82
|
+
* - public interface Repository {}
|
|
83
|
+
* - public enum Status {}
|
|
84
|
+
* - public record Point(int x, int y) {}
|
|
85
|
+
* - public void method() {} (inside a class)
|
|
86
|
+
* - Interface methods are implicitly public
|
|
87
|
+
*
|
|
88
|
+
* Package-private (default access) declarations are NOT exported.
|
|
89
|
+
*/
|
|
90
|
+
export class JavaExportExtractor {
|
|
91
|
+
extractExports(rootNode) {
|
|
92
|
+
const exports = [];
|
|
93
|
+
const seen = new Set();
|
|
94
|
+
const addExport = (name) => {
|
|
95
|
+
if (name && !seen.has(name)) {
|
|
96
|
+
seen.add(name);
|
|
97
|
+
exports.push(name);
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
for (let i = 0; i < rootNode.namedChildCount; i++) {
|
|
101
|
+
const child = rootNode.namedChild(i);
|
|
102
|
+
if (!child)
|
|
103
|
+
continue;
|
|
104
|
+
this.extractFromNode(child, addExport);
|
|
105
|
+
}
|
|
106
|
+
return exports;
|
|
107
|
+
}
|
|
108
|
+
extractFromNode(node, addExport) {
|
|
109
|
+
switch (node.type) {
|
|
110
|
+
case 'class_declaration':
|
|
111
|
+
case 'interface_declaration':
|
|
112
|
+
case 'enum_declaration':
|
|
113
|
+
case 'record_declaration': {
|
|
114
|
+
if (hasPublicModifier(node)) {
|
|
115
|
+
const nameNode = node.childForFieldName('name');
|
|
116
|
+
if (nameNode)
|
|
117
|
+
addExport(nameNode.text);
|
|
118
|
+
}
|
|
119
|
+
this.extractPublicMembers(node, addExport);
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
extractPublicMembers(container, addExport) {
|
|
125
|
+
const body = container.childForFieldName('body');
|
|
126
|
+
if (!body)
|
|
127
|
+
return;
|
|
128
|
+
const isInterface = container.type === 'interface_declaration';
|
|
129
|
+
for (let i = 0; i < body.namedChildCount; i++) {
|
|
130
|
+
const child = body.namedChild(i);
|
|
131
|
+
if (!child)
|
|
132
|
+
continue;
|
|
133
|
+
this.extractMemberExport(child, isInterface, addExport);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
extractMemberExport(member, isInterface, addExport) {
|
|
137
|
+
if (member.type === 'method_declaration' || member.type === 'constructor_declaration') {
|
|
138
|
+
if (isInterface || hasPublicModifier(member)) {
|
|
139
|
+
const nameNode = member.childForFieldName('name');
|
|
140
|
+
if (nameNode)
|
|
141
|
+
addExport(nameNode.text);
|
|
142
|
+
}
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
if (member.type === 'field_declaration' && hasPublicModifier(member)) {
|
|
146
|
+
this.extractFieldNames(member, addExport);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
extractFieldNames(fieldDecl, addExport) {
|
|
150
|
+
for (let i = 0; i < fieldDecl.namedChildCount; i++) {
|
|
151
|
+
const child = fieldDecl.namedChild(i);
|
|
152
|
+
if (child?.type === 'variable_declarator') {
|
|
153
|
+
const nameNode = child.childForFieldName('name');
|
|
154
|
+
if (nameNode)
|
|
155
|
+
addExport(nameNode.text);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// =============================================================================
|
|
161
|
+
// IMPORT EXTRACTOR
|
|
162
|
+
// =============================================================================
|
|
163
|
+
/**
|
|
164
|
+
* Check if a Java import path is a standard library package.
|
|
165
|
+
* Standard library packages start with java. or javax.
|
|
166
|
+
*/
|
|
167
|
+
function isJavaStdLib(importPath) {
|
|
168
|
+
return importPath.startsWith('java.') || importPath.startsWith('javax.');
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Java import extractor
|
|
172
|
+
*
|
|
173
|
+
* Handles all Java import patterns:
|
|
174
|
+
* - import com.example.MyClass; (single import)
|
|
175
|
+
* - import com.example.*; (wildcard import)
|
|
176
|
+
* - import static com.example.Utils.method; (static import)
|
|
177
|
+
* - import static com.example.Utils.*; (static wildcard import)
|
|
178
|
+
*
|
|
179
|
+
* Standard library imports (java.*, javax.*) are filtered out.
|
|
180
|
+
*/
|
|
181
|
+
export class JavaImportExtractor {
|
|
182
|
+
importNodeTypes = ['import_declaration'];
|
|
183
|
+
extractImportPath(node) {
|
|
184
|
+
const path = this.getImportPath(node);
|
|
185
|
+
if (!path || isJavaStdLib(path))
|
|
186
|
+
return null;
|
|
187
|
+
return path;
|
|
188
|
+
}
|
|
189
|
+
processImportSymbols(node) {
|
|
190
|
+
const path = this.getImportPath(node);
|
|
191
|
+
if (!path || isJavaStdLib(path))
|
|
192
|
+
return null;
|
|
193
|
+
const parts = path.split('.');
|
|
194
|
+
const lastPart = parts[parts.length - 1];
|
|
195
|
+
// For wildcard imports, use the package name as the symbol
|
|
196
|
+
if (lastPart === '*') {
|
|
197
|
+
const packagePath = parts.slice(0, -1).join('.');
|
|
198
|
+
const packageName = parts[parts.length - 2];
|
|
199
|
+
return { importPath: packagePath, symbols: [packageName] };
|
|
200
|
+
}
|
|
201
|
+
return { importPath: path, symbols: [lastPart] };
|
|
202
|
+
}
|
|
203
|
+
getImportPath(node) {
|
|
204
|
+
// Find the scoped_identifier or identifier child (import path)
|
|
205
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
206
|
+
const child = node.namedChild(i);
|
|
207
|
+
if (!child)
|
|
208
|
+
continue;
|
|
209
|
+
if (child.type === 'scoped_identifier' || child.type === 'identifier') {
|
|
210
|
+
const hasWildcard = hasChildOfType(node, 'asterisk');
|
|
211
|
+
return hasWildcard ? `${child.text}.*` : child.text;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// =============================================================================
|
|
218
|
+
// SYMBOL EXTRACTOR
|
|
219
|
+
// =============================================================================
|
|
220
|
+
/**
|
|
221
|
+
* Java symbol extractor
|
|
222
|
+
*
|
|
223
|
+
* Handles:
|
|
224
|
+
* - method_declaration (public void method() {})
|
|
225
|
+
* - constructor_declaration (public MyClass() {})
|
|
226
|
+
* - class_declaration (class MyClass {})
|
|
227
|
+
* - interface_declaration (interface MyInterface {})
|
|
228
|
+
* - enum_declaration (enum MyEnum {})
|
|
229
|
+
* - record_declaration (record MyRecord(int x) {})
|
|
230
|
+
*
|
|
231
|
+
* Call sites: method_invocation (direct calls and object.method() calls)
|
|
232
|
+
*/
|
|
233
|
+
export class JavaSymbolExtractor {
|
|
234
|
+
symbolNodeTypes = [
|
|
235
|
+
'method_declaration',
|
|
236
|
+
'constructor_declaration',
|
|
237
|
+
'class_declaration',
|
|
238
|
+
'interface_declaration',
|
|
239
|
+
'enum_declaration',
|
|
240
|
+
'record_declaration',
|
|
241
|
+
];
|
|
242
|
+
extractSymbol(node, content, parentClass) {
|
|
243
|
+
switch (node.type) {
|
|
244
|
+
case 'method_declaration':
|
|
245
|
+
return this.extractMethodInfo(node, content, parentClass);
|
|
246
|
+
case 'constructor_declaration':
|
|
247
|
+
return this.extractConstructorInfo(node, content, parentClass);
|
|
248
|
+
case 'class_declaration':
|
|
249
|
+
return this.extractClassInfo(node);
|
|
250
|
+
case 'interface_declaration':
|
|
251
|
+
return this.extractInterfaceInfo(node);
|
|
252
|
+
case 'enum_declaration':
|
|
253
|
+
return this.extractEnumInfo(node);
|
|
254
|
+
case 'record_declaration':
|
|
255
|
+
return this.extractRecordInfo(node);
|
|
256
|
+
default:
|
|
257
|
+
return null;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
extractCallSite(node) {
|
|
261
|
+
const line = node.startPosition.row + 1;
|
|
262
|
+
// method_invocation: foo() or obj.foo()
|
|
263
|
+
if (node.type === 'method_invocation') {
|
|
264
|
+
const nameNode = node.childForFieldName('name');
|
|
265
|
+
if (!nameNode)
|
|
266
|
+
return null;
|
|
267
|
+
return { symbol: nameNode.text, line, key: `${nameNode.text}:${line}` };
|
|
268
|
+
}
|
|
269
|
+
// method_reference: String::valueOf — no field names, last named child is the method identifier
|
|
270
|
+
if (node.type === 'method_reference') {
|
|
271
|
+
const lastChild = node.namedChild(node.namedChildCount - 1);
|
|
272
|
+
if (lastChild?.type === 'identifier') {
|
|
273
|
+
return { symbol: lastChild.text, line, key: `${lastChild.text}:${line}` };
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return null;
|
|
277
|
+
}
|
|
278
|
+
extractMethodInfo(node, content, parentClass) {
|
|
279
|
+
const nameNode = node.childForFieldName('name');
|
|
280
|
+
if (!nameNode)
|
|
281
|
+
return null;
|
|
282
|
+
return {
|
|
283
|
+
name: nameNode.text,
|
|
284
|
+
type: parentClass ? 'method' : 'function',
|
|
285
|
+
startLine: node.startPosition.row + 1,
|
|
286
|
+
endLine: node.endPosition.row + 1,
|
|
287
|
+
parentClass,
|
|
288
|
+
signature: extractSignature(node, content),
|
|
289
|
+
parameters: extractParameters(node, content),
|
|
290
|
+
returnType: extractJavaReturnType(node),
|
|
291
|
+
complexity: calculateComplexity(node),
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
extractConstructorInfo(node, content, parentClass) {
|
|
295
|
+
const nameNode = node.childForFieldName('name');
|
|
296
|
+
if (!nameNode)
|
|
297
|
+
return null;
|
|
298
|
+
return {
|
|
299
|
+
name: nameNode.text,
|
|
300
|
+
type: 'method',
|
|
301
|
+
startLine: node.startPosition.row + 1,
|
|
302
|
+
endLine: node.endPosition.row + 1,
|
|
303
|
+
parentClass,
|
|
304
|
+
signature: extractSignature(node, content),
|
|
305
|
+
parameters: extractParameters(node, content),
|
|
306
|
+
complexity: calculateComplexity(node),
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
extractClassInfo(node) {
|
|
310
|
+
const nameNode = node.childForFieldName('name');
|
|
311
|
+
if (!nameNode)
|
|
312
|
+
return null;
|
|
313
|
+
return {
|
|
314
|
+
name: nameNode.text,
|
|
315
|
+
type: 'class',
|
|
316
|
+
startLine: node.startPosition.row + 1,
|
|
317
|
+
endLine: node.endPosition.row + 1,
|
|
318
|
+
signature: `class ${nameNode.text}`,
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
extractInterfaceInfo(node) {
|
|
322
|
+
const nameNode = node.childForFieldName('name');
|
|
323
|
+
if (!nameNode)
|
|
324
|
+
return null;
|
|
325
|
+
return {
|
|
326
|
+
name: nameNode.text,
|
|
327
|
+
type: 'interface',
|
|
328
|
+
startLine: node.startPosition.row + 1,
|
|
329
|
+
endLine: node.endPosition.row + 1,
|
|
330
|
+
signature: `interface ${nameNode.text}`,
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
extractEnumInfo(node) {
|
|
334
|
+
const nameNode = node.childForFieldName('name');
|
|
335
|
+
if (!nameNode)
|
|
336
|
+
return null;
|
|
337
|
+
return {
|
|
338
|
+
name: nameNode.text,
|
|
339
|
+
type: 'class',
|
|
340
|
+
startLine: node.startPosition.row + 1,
|
|
341
|
+
endLine: node.endPosition.row + 1,
|
|
342
|
+
signature: `enum ${nameNode.text}`,
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
extractRecordInfo(node) {
|
|
346
|
+
const nameNode = node.childForFieldName('name');
|
|
347
|
+
if (!nameNode)
|
|
348
|
+
return null;
|
|
349
|
+
return {
|
|
350
|
+
name: nameNode.text,
|
|
351
|
+
type: 'class',
|
|
352
|
+
startLine: node.startPosition.row + 1,
|
|
353
|
+
endLine: node.endPosition.row + 1,
|
|
354
|
+
signature: `record ${nameNode.text}`,
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
// =============================================================================
|
|
359
|
+
// HELPERS
|
|
360
|
+
// =============================================================================
|
|
361
|
+
/**
|
|
362
|
+
* Check if a node has a `public` modifier.
|
|
363
|
+
* Iterates the modifiers node's children for an exact `public` token
|
|
364
|
+
* to avoid false positives from substring matching.
|
|
365
|
+
*/
|
|
366
|
+
function hasPublicModifier(node) {
|
|
367
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
368
|
+
const child = node.child(i);
|
|
369
|
+
if (child?.type === 'modifiers') {
|
|
370
|
+
for (let j = 0; j < child.childCount; j++) {
|
|
371
|
+
if (child.child(j)?.type === 'public')
|
|
372
|
+
return true;
|
|
373
|
+
}
|
|
374
|
+
return false;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
return false;
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Extract return type from a Java method_declaration.
|
|
381
|
+
* Java uses a 'type' field instead of 'return_type'.
|
|
382
|
+
*/
|
|
383
|
+
function extractJavaReturnType(node) {
|
|
384
|
+
if (node.type !== 'method_declaration')
|
|
385
|
+
return undefined;
|
|
386
|
+
const typeNode = node.childForFieldName('type');
|
|
387
|
+
if (!typeNode)
|
|
388
|
+
return undefined;
|
|
389
|
+
return typeNode.text;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Find the first descendant of a specific type (breadth-first among children).
|
|
393
|
+
*/
|
|
394
|
+
function findDescendant(node, type) {
|
|
395
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
396
|
+
const child = node.namedChild(i);
|
|
397
|
+
if (!child)
|
|
398
|
+
continue;
|
|
399
|
+
if (child.type === type)
|
|
400
|
+
return child;
|
|
401
|
+
const found = findDescendant(child, type);
|
|
402
|
+
if (found)
|
|
403
|
+
return found;
|
|
404
|
+
}
|
|
405
|
+
return null;
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Check if a node has a child of a specific type (including unnamed children).
|
|
409
|
+
*/
|
|
410
|
+
function hasChildOfType(node, type) {
|
|
411
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
412
|
+
if (node.child(i)?.type === type)
|
|
413
|
+
return true;
|
|
414
|
+
}
|
|
415
|
+
return false;
|
|
416
|
+
}
|
|
417
|
+
// =============================================================================
|
|
418
|
+
// LANGUAGE DEFINITION
|
|
419
|
+
// =============================================================================
|
|
420
|
+
export const javaDefinition = {
|
|
421
|
+
id: 'java',
|
|
422
|
+
extensions: ['java'],
|
|
423
|
+
grammar: Java,
|
|
424
|
+
traverser: new JavaTraverser(),
|
|
425
|
+
exportExtractor: new JavaExportExtractor(),
|
|
426
|
+
importExtractor: new JavaImportExtractor(),
|
|
427
|
+
symbolExtractor: new JavaSymbolExtractor(),
|
|
428
|
+
complexity: {
|
|
429
|
+
decisionPoints: [
|
|
430
|
+
'if_statement',
|
|
431
|
+
'while_statement',
|
|
432
|
+
'for_statement',
|
|
433
|
+
'enhanced_for_statement',
|
|
434
|
+
'do_statement',
|
|
435
|
+
'catch_clause',
|
|
436
|
+
'ternary_expression',
|
|
437
|
+
'binary_expression',
|
|
438
|
+
'switch_block_statement_group',
|
|
439
|
+
'switch_rule',
|
|
440
|
+
],
|
|
441
|
+
nestingTypes: [
|
|
442
|
+
'if_statement',
|
|
443
|
+
'while_statement',
|
|
444
|
+
'for_statement',
|
|
445
|
+
'enhanced_for_statement',
|
|
446
|
+
'do_statement',
|
|
447
|
+
'switch_expression',
|
|
448
|
+
'catch_clause',
|
|
449
|
+
'lambda_expression',
|
|
450
|
+
],
|
|
451
|
+
nonNestingTypes: ['switch_block_statement_group', 'switch_rule', 'ternary_expression'],
|
|
452
|
+
lambdaTypes: ['lambda_expression'],
|
|
453
|
+
operatorSymbols: new Set([
|
|
454
|
+
'+',
|
|
455
|
+
'-',
|
|
456
|
+
'*',
|
|
457
|
+
'/',
|
|
458
|
+
'%',
|
|
459
|
+
'==',
|
|
460
|
+
'!=',
|
|
461
|
+
'<',
|
|
462
|
+
'>',
|
|
463
|
+
'<=',
|
|
464
|
+
'>=',
|
|
465
|
+
'=',
|
|
466
|
+
'+=',
|
|
467
|
+
'-=',
|
|
468
|
+
'*=',
|
|
469
|
+
'/=',
|
|
470
|
+
'%=',
|
|
471
|
+
'&=',
|
|
472
|
+
'|=',
|
|
473
|
+
'^=',
|
|
474
|
+
'<<=',
|
|
475
|
+
'>>=',
|
|
476
|
+
'>>>=',
|
|
477
|
+
'&&',
|
|
478
|
+
'||',
|
|
479
|
+
'!',
|
|
480
|
+
'&',
|
|
481
|
+
'|',
|
|
482
|
+
'^',
|
|
483
|
+
'~',
|
|
484
|
+
'<<',
|
|
485
|
+
'>>',
|
|
486
|
+
'>>>',
|
|
487
|
+
'.',
|
|
488
|
+
'?',
|
|
489
|
+
':',
|
|
490
|
+
'::',
|
|
491
|
+
'->',
|
|
492
|
+
'(',
|
|
493
|
+
')',
|
|
494
|
+
'[',
|
|
495
|
+
']',
|
|
496
|
+
'{',
|
|
497
|
+
'}',
|
|
498
|
+
]),
|
|
499
|
+
operatorKeywords: new Set([
|
|
500
|
+
'if',
|
|
501
|
+
'else',
|
|
502
|
+
'for',
|
|
503
|
+
'while',
|
|
504
|
+
'do',
|
|
505
|
+
'switch',
|
|
506
|
+
'case',
|
|
507
|
+
'default',
|
|
508
|
+
'return',
|
|
509
|
+
'throw',
|
|
510
|
+
'try',
|
|
511
|
+
'catch',
|
|
512
|
+
'finally',
|
|
513
|
+
'new',
|
|
514
|
+
'instanceof',
|
|
515
|
+
'break',
|
|
516
|
+
'continue',
|
|
517
|
+
'class',
|
|
518
|
+
'extends',
|
|
519
|
+
'implements',
|
|
520
|
+
'interface',
|
|
521
|
+
'enum',
|
|
522
|
+
'record',
|
|
523
|
+
'import',
|
|
524
|
+
'package',
|
|
525
|
+
'public',
|
|
526
|
+
'private',
|
|
527
|
+
'protected',
|
|
528
|
+
'static',
|
|
529
|
+
'final',
|
|
530
|
+
'abstract',
|
|
531
|
+
'synchronized',
|
|
532
|
+
'volatile',
|
|
533
|
+
'transient',
|
|
534
|
+
'native',
|
|
535
|
+
'void',
|
|
536
|
+
'super',
|
|
537
|
+
'this',
|
|
538
|
+
'assert',
|
|
539
|
+
'yield',
|
|
540
|
+
'var',
|
|
541
|
+
]),
|
|
542
|
+
},
|
|
543
|
+
symbols: {
|
|
544
|
+
callExpressionTypes: ['method_invocation', 'method_reference'],
|
|
545
|
+
},
|
|
546
|
+
};
|
|
547
|
+
//# sourceMappingURL=java.js.map
|