@@ -98,7 +98,13 @@ ident :: Ident -> N.Ident
98
98
ident = N. Ident . getIdent
99
99
100
100
convertType :: String -> Type a -> T. SourceType
101
- convertType fileName = go
101
+ convertType = convertType' False
102
+
103
+ convertVtaType :: String -> Type a -> T. SourceType
104
+ convertVtaType = convertType' True
105
+
106
+ convertType' :: Bool -> String -> Type a -> T. SourceType
107
+ convertType' withinVta fileName = go
102
108
where
103
109
goRow (Row labels tl) b = do
104
110
let
@@ -120,7 +126,7 @@ convertType fileName = go
120
126
TypeConstructor _ a ->
121
127
T. TypeConstructor (sourceQualName fileName a) $ qualified a
122
128
TypeWildcard _ a ->
123
- T. TypeWildcard (sourceAnnCommented fileName a a) T. UnnamedWildcard
129
+ T. TypeWildcard (sourceAnnCommented fileName a a) $ if withinVta then T. IgnoredWildcard else T. UnnamedWildcard
124
130
TypeHole _ a ->
125
131
T. TypeWildcard (sourceName fileName a) . T. HoleWildcard . getIdent $ nameValue a
126
132
TypeString _ a b ->
@@ -182,7 +188,7 @@ convertType fileName = go
182
188
Env. tyFunction $> sourceAnnCommented fileName a a
183
189
TypeConstrained _ a _ b -> do
184
190
let
185
- a' = convertConstraint fileName a
191
+ a' = convertConstraint withinVta fileName a
186
192
b' = go b
187
193
ann = Pos. widenSourceAnn (T. constraintAnn a') (T. getAnnForType b')
188
194
T. ConstrainedType ann a' b'
@@ -195,13 +201,13 @@ convertType fileName = go
195
201
ann = uncurry (sourceAnnCommented fileName) rng
196
202
T. setAnnForType ann $ Env. kindRow a'
197
203
198
- convertConstraint :: String -> Constraint a -> T. SourceConstraint
199
- convertConstraint fileName = go
204
+ convertConstraint :: Bool -> String -> Constraint a -> T. SourceConstraint
205
+ convertConstraint withinVta fileName = go
200
206
where
201
207
go = \ case
202
208
cst@ (Constraint _ name args) -> do
203
209
let ann = uncurry (sourceAnnCommented fileName) $ constraintRange cst
204
- T. Constraint ann (qualified name) [] (convertType fileName <$> args) Nothing
210
+ T. Constraint ann (qualified name) [] (convertType' withinVta fileName <$> args) Nothing
205
211
ConstraintParens _ (Wrapped _ c _) -> go c
206
212
207
213
convertGuarded :: String -> Guarded a -> [AST. GuardedExpr ]
@@ -337,7 +343,7 @@ convertExpr fileName = go
337
343
positioned ann $ AST. App (go a) (go b)
338
344
expr@ (ExprVisibleTypeApp _ a _ b) -> do
339
345
let ann = uncurry (sourceAnn fileName) $ exprRange expr
340
- positioned ann $ AST. VisibleTypeApp (go a) (convertType fileName b)
346
+ positioned ann $ AST. VisibleTypeApp (go a) (convertVtaType fileName b)
341
347
expr@ (ExprLambda _ (Lambda _ as _ b)) -> do
342
348
let ann = uncurry (sourceAnnCommented fileName) $ exprRange expr
343
349
positioned ann
@@ -472,7 +478,7 @@ convertDeclaration fileName decl = case decl of
472
478
pure $ AST. TypeClassDeclaration ann
473
479
(nameValue name)
474
480
(goTypeVar <$> vars)
475
- (convertConstraint fileName <$> maybe [] (toList . fst ) sup)
481
+ (convertConstraint False fileName <$> maybe [] (toList . fst ) sup)
476
482
(goFundep <$> maybe [] (toList . snd ) fdeps)
477
483
(goSig <$> maybe [] (NE. toList . snd ) bd)
478
484
DeclInstanceChain _ insts -> do
@@ -483,7 +489,7 @@ convertDeclaration fileName decl = case decl of
483
489
clsAnn = findInstanceAnn cls args
484
490
AST. TypeInstanceDeclaration ann' clsAnn chainId ix
485
491
(mkPartialInstanceName nameSep cls args)
486
- (convertConstraint fileName <$> maybe [] (toList . fst ) ctrs)
492
+ (convertConstraint False fileName <$> maybe [] (toList . fst ) ctrs)
487
493
(qualified cls)
488
494
(convertType fileName <$> args)
489
495
(AST. ExplicitInstance $ goInstanceBinding <$> maybe [] (NE. toList . snd ) bd)
@@ -497,7 +503,7 @@ convertDeclaration fileName decl = case decl of
497
503
| otherwise = AST. DerivedInstance
498
504
clsAnn = findInstanceAnn cls args
499
505
pure $ AST. TypeInstanceDeclaration ann clsAnn chainId 0 name'
500
- (convertConstraint fileName <$> maybe [] (toList . fst ) ctrs)
506
+ (convertConstraint False fileName <$> maybe [] (toList . fst ) ctrs)
501
507
(qualified cls)
502
508
(convertType fileName <$> args)
503
509
instTy
0 commit comments