on master help sign in
Track the region for record access names
2b0bc09Evan Czaplicki
compiler/src/AST/Canonical.hs+1−1
@@ -100,7 +100,7 @@ data Expr_
100 | LetDestruct Pattern Expr Expr
100 | LetDestruct Pattern Expr Expr
101 | Case Expr [CaseBranch]
101 | Case Expr [CaseBranch]
102 | Accessor N.Name
102 | Accessor N.Name
103− | Access Expr N.Name
103+ | Access Expr (A.Located N.Name)
104 | Update N.Name Expr (Map.Map N.Name FieldUpdate)
104 | Update N.Name Expr (Map.Map N.Name FieldUpdate)
105 | Record (Map.Map N.Name Expr)
105 | Record (Map.Map N.Name Expr)
106 | Unit
106 | Unit
compiler/src/AST/Source.hs+1−1
@@ -52,7 +52,7 @@ data Expr_
52 | Let [A.Located Def] Expr
52 | Let [A.Located Def] Expr
53 | Case Expr [(Pattern, Expr)]
53 | Case Expr [(Pattern, Expr)]
54 | Accessor N.Name
54 | Accessor N.Name
55− | Access Expr N.Name
55+ | Access Expr (A.Located N.Name)
56 | Update (A.Located N.Name) [(A.Located N.Name, Expr)]
56 | Update (A.Located N.Name) [(A.Located N.Name, Expr)]
57 | Record [(A.Located N.Name, Expr)]
57 | Record [(A.Located N.Name, Expr)]
58 | Unit
58 | Unit
compiler/src/AST/Valid.hs+1−1
@@ -51,7 +51,7 @@ data Expr_
51 | Let [Def] Expr
51 | Let [Def] Expr
52 | Case Expr [(Src.Pattern, Expr)]
52 | Case Expr [(Src.Pattern, Expr)]
53 | Accessor N.Name
53 | Accessor N.Name
54− | Access Expr N.Name
54+ | Access Expr (A.Located N.Name)
55 | Update (A.Located N.Name) [(A.Located N.Name, Expr)]
55 | Update (A.Located N.Name) [(A.Located N.Name, Expr)]
56 | Record [(A.Located N.Name, Expr)]
56 | Record [(A.Located N.Name, Expr)]
57 | Unit
57 | Unit
compiler/src/Optimize/Expression.hs+1−1
@@ -146,7 +146,7 @@ optimize cycle (A.At region expression) =
146 Can.Accessor field ->
146 Can.Accessor field ->
147 Names.registerField field (Opt.Accessor field)
147 Names.registerField field (Opt.Accessor field)
148
148
149− Can.Access record field ->
149+ Can.Access record (A.At _ field) ->
150 do optRecord <- optimize cycle record
150 do optRecord <- optimize cycle record
151 Names.registerField field (Opt.Access optRecord field)
151 Names.registerField field (Opt.Access optRecord field)
152
152
compiler/src/Parse/Expression.hs+2−1
@@ -92,9 +92,10 @@ accessible :: R.Position -> Src.Expr -> Parser Src.Expr
92accessible start expr =
92accessible start expr =
93 oneOf
93 oneOf
94 [ do Symbol.dot
94 [ do Symbol.dot
95+ pos <- getPosition
95 field <- Var.lower
96 field <- Var.lower
96 end <- getPosition
97 end <- getPosition
97− let newExpr = A.at start end (Src.Access expr field)
98+ let newExpr = A.at start end (Src.Access expr (A.at pos end field))
98 accessible start newExpr
99 accessible start newExpr
99 , return expr
100 , return expr
100 ]
101 ]