@@ -29,6 +29,10 @@ open class RustAstBaseListener(private val fileName: String) : RustParserBaseLis
29
29
30
30
private var structMap = mutableMapOf<String , CodeDataStruct >()
31
31
32
+ private var currentModule: String = " "
33
+ // / for testing
34
+ private var lastModule: String = " "
35
+
32
36
33
37
/* *
34
38
* localVars will store all local variables in the current scope
@@ -82,6 +86,15 @@ open class RustAstBaseListener(private val fileName: String) : RustParserBaseLis
82
86
Imports = imports
83
87
}
84
88
89
+ override fun enterModule (ctx : RustParser .ModuleContext ? ) {
90
+ currentModule = (ctx?.identifier()?.text ? : return )
91
+ }
92
+
93
+ override fun exitModule (ctx : RustParser .ModuleContext ? ) {
94
+ lastModule = currentModule
95
+ currentModule = " "
96
+ }
97
+
85
98
override fun enterUseDeclaration (ctx : RustParser .UseDeclarationContext ? ) {
86
99
val importString: List <List <String >> = buildToPath(ctx)
87
100
@@ -150,6 +163,7 @@ open class RustAstBaseListener(private val fileName: String) : RustParserBaseLis
150
163
151
164
val codeStruct = CodeDataStruct (
152
165
NodeName = structName,
166
+ Module = currentModule,
153
167
Package = codeContainer.PackageName ,
154
168
Annotations = annotation,
155
169
Fields = buildFields(ctx.structFields()),
@@ -270,6 +284,7 @@ open class RustAstBaseListener(private val fileName: String) : RustParserBaseLis
270
284
271
285
val codeStruct = CodeDataStruct (
272
286
NodeName = enumName,
287
+ Module = currentModule,
273
288
Package = codeContainer.PackageName ,
274
289
Annotations = annotation,
275
290
Fields = buildEnumFields(ctx.enumItems()),
@@ -367,6 +382,7 @@ open class RustAstBaseListener(private val fileName: String) : RustParserBaseLis
367
382
} else {
368
383
currentNode = CodeDataStruct (
369
384
NodeName = nodeName,
385
+ Module = currentModule,
370
386
Package = codeContainer.PackageName ,
371
387
Position = buildPosition(ctx ? : return )
372
388
)
@@ -417,6 +433,7 @@ open class RustAstBaseListener(private val fileName: String) : RustParserBaseLis
417
433
return listOf (
418
434
CodeDataStruct ().apply {
419
435
NodeName = fileName.substringBeforeLast(' .' )
436
+ Module = if (lastModule == " tests" ) lastModule else " "
420
437
Type = DataStructType .OBJECT
421
438
Package = codeContainer.PackageName
422
439
FilePath = codeContainer.FullName
0 commit comments