File tree 2 files changed +14
-3
lines changed
2 files changed +14
-3
lines changed Original file line number Diff line number Diff line change @@ -81,6 +81,7 @@ import Primer.Primitives (tChar, tInt)
81
81
import Primer.Questions (
82
82
generateNameExpr ,
83
83
generateNameTy ,
84
+ generateNameTyAvoiding ,
84
85
variablesInScopeExpr ,
85
86
variablesInScopeTy ,
86
87
)
@@ -490,8 +491,8 @@ options typeDefs defs cxt level def0 sel0 = \case
490
491
Left zE -> generateNameExpr typeOrKind zE
491
492
Right zT -> generateNameTy typeOrKind zT
492
493
SelectionTypeDef sel -> do
493
- (_ , zT) <- conField sel
494
- pure $ generateNameTy typeOrKind zT
494
+ (def , zT) <- conField sel
495
+ pure $ generateNameTyAvoiding (unLocalName . fst <$> astTypeDefParameters def) typeOrKind zT
495
496
varsInScope = case sel0 of
496
497
SelectionDef sel -> do
497
498
nodeSel <- sel. node
Original file line number Diff line number Diff line change @@ -10,6 +10,7 @@ module Primer.Questions (
10
10
ShadowedVarsTy (.. ), -- only exported for testing
11
11
generateNameExpr ,
12
12
generateNameTy ,
13
+ generateNameTyAvoiding ,
13
14
uniquify ,
14
15
) where
15
16
@@ -100,9 +101,18 @@ generateNameTy ::
100
101
Either (Maybe (Type' () )) (Maybe Kind ) ->
101
102
TypeZip ->
102
103
m [Name ]
104
+ generateNameTy = generateNameTyAvoiding []
105
+
106
+ generateNameTyAvoiding ::
107
+ MonadReader Cxt m =>
108
+ [Name ] ->
109
+ Either (Maybe (Type' () )) (Maybe Kind ) ->
110
+ TypeZip ->
111
+ m [Name ]
103
112
-- It doesn't really make sense to ask for a term variable (Left) here, but
104
113
-- it doesn't harm to support it
105
- generateNameTy tk z = uniquifyMany <$> mkAvoidForFreshNameTy z <*> baseNames tk
114
+ generateNameTyAvoiding avoiding tk z =
115
+ uniquifyMany <$> ((Set. fromList avoiding <> ) <$> mkAvoidForFreshNameTy z) <*> baseNames tk
106
116
107
117
baseNames ::
108
118
MonadReader Cxt m =>
You can’t perform that action at this time.
0 commit comments