@@ -29,6 +29,10 @@ open class RustAstBaseListener(private val fileName: String) : RustParserBaseLis
2929
3030 private var structMap = mutableMapOf<String , CodeDataStruct >()
3131
32+ private var currentModule: String = " "
33+ // / for testing
34+ private var lastModule: String = " "
35+
3236
3337 /* *
3438 * localVars will store all local variables in the current scope
@@ -82,6 +86,15 @@ open class RustAstBaseListener(private val fileName: String) : RustParserBaseLis
8286 Imports = imports
8387 }
8488
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+
8598 override fun enterUseDeclaration (ctx : RustParser .UseDeclarationContext ? ) {
8699 val importString: List <List <String >> = buildToPath(ctx)
87100
@@ -150,6 +163,7 @@ open class RustAstBaseListener(private val fileName: String) : RustParserBaseLis
150163
151164 val codeStruct = CodeDataStruct (
152165 NodeName = structName,
166+ Module = currentModule,
153167 Package = codeContainer.PackageName ,
154168 Annotations = annotation,
155169 Fields = buildFields(ctx.structFields()),
@@ -270,6 +284,7 @@ open class RustAstBaseListener(private val fileName: String) : RustParserBaseLis
270284
271285 val codeStruct = CodeDataStruct (
272286 NodeName = enumName,
287+ Module = currentModule,
273288 Package = codeContainer.PackageName ,
274289 Annotations = annotation,
275290 Fields = buildEnumFields(ctx.enumItems()),
@@ -367,6 +382,7 @@ open class RustAstBaseListener(private val fileName: String) : RustParserBaseLis
367382 } else {
368383 currentNode = CodeDataStruct (
369384 NodeName = nodeName,
385+ Module = currentModule,
370386 Package = codeContainer.PackageName ,
371387 Position = buildPosition(ctx ? : return )
372388 )
@@ -417,6 +433,7 @@ open class RustAstBaseListener(private val fileName: String) : RustParserBaseLis
417433 return listOf (
418434 CodeDataStruct ().apply {
419435 NodeName = fileName.substringBeforeLast(' .' )
436+ Module = if (lastModule == " tests" ) lastModule else " "
420437 Type = DataStructType .OBJECT
421438 Package = codeContainer.PackageName
422439 FilePath = codeContainer.FullName
0 commit comments