Skip to content

Fix: Missing definitions from imported modules in `get-scope`

Motivation and Context

The scopes & definitions from get-scope were missing things from the std-lib & #imported modules

Description

This MR fixes the above mentioned issue

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Performance improvement (non-breaking change that improves performance)
  • None (change with no changelog)

Changelog

For ligo files with #imported modues

#import "y.mligo" "X"

let z = X.x.a

Before

$ ligo.59 info get-scope x_test.mligo --format dev --with-types
Scopes:
[ X#0  ] File "x_test.mligo", line 3, characters 8-13

Variable definitions:
(z#1 -> z) 
Range: File "x_test.mligo", line 3, characters 4-5 
Body Range: File "x_test.mligo", line 3, characters 8-13 
Content: |unresolved|
references: []
Type definitions:
Module definitions:
(X#0 -> X) 
Range: File "x_test.mligo", line 1, characters 7-8 
Body Range: File "x_test.mligo", line 1, characters 11-36 
Content: Alias: Mangled_module_y____mligo 
references: File "x_test.mligo", line 3, characters 8-9 

After

$ ligo info get-scope x_test.mligo  --format dev --no-stdlib --with-types 
Scopes:
[ X#4 Mangled_module_y____mligo#3 x#2 y#1 x#0  ] File "x_test.mligo", line 3, characters 8-13
[ x#0  ] File "y.mligo", line 3, characters 8-9
[ y#1 x#0  ] File "y.mligo", line 4, characters 14-15
[ y#1 x#0  ] File "y.mligo", line 4, characters 22-24

Variable definitions:
(z#5 -> z) 
Range: File "x_test.mligo", line 3, characters 4-5 
Body Range: File "x_test.mligo", line 3, characters 8-13 
Content: |resolved: int|
references: []
Type definitions:
Module definitions:
(Mangled_module_y____mligo#3 -> Mangled_module_y____mligo) 
Range:  
Body Range:  
Content: Members: Variable definitions:
                  (x#2 -> x) 
                  Range: File "y.mligo", line 4, characters 4-5 
                  Body Range: File "y.mligo", line 4, characters 8-25 
                  Content: |resolved: x|
                  references: File "x_test.mligo", line 3, characters 8-13
                  (y#1 -> y) 
                  Range: File "y.mligo", line 3, characters 4-5 
                  Body Range: File "y.mligo", line 3, characters 8-9 
                  Content: |resolved: int|
                  references: File "y.mligo", line 4, characters 14-15
                  Type definitions:
                  (x#0 -> x) 
                  Range: File "y.mligo", line 1, characters 5-6 
                  Body Range: File "y.mligo", line 1, characters 9-33 
                  Content: : |record[a -> int , b -> string]|
                  references: []
                  Module definitions:
                   
references: File "x_test.mligo", line 1, characters 11-36 

(X#4 -> X) 
Range: File "x_test.mligo", line 1, characters 7-8 
Body Range: File "x_test.mligo", line 1, characters 11-36 
Content: Alias: Mangled_module_y____mligo#3 
references: File "x_test.mligo", line 3, characters 8-9 

Checklist:

  • Changes follow the existing coding style (use dune @fmt to check).
  • Tests for the changes have been added (for bug fixes / feature).
  • Documentation has been updated.
  • Changelog description has been added (if appropriate).
  • Start titles under ## Changelog section with #### (if appropriate).
  • There is no image or uploaded file in changelog
  • Examples in changed behaviour have been added to the changelog (for breaking change / feature).
Edited by Melwyn Saldanha

Merge request reports