haskell-suite / haskell-names

Haskell suite library for name resolution
52 stars 17 forks source link

GADT constructors not Value Binders #116

Open nomeata opened 1 year ago

nomeata commented 1 year ago

Given this file:

{-# LANGUAGE GADTs #-}

data Foo1 = Bar1
data Foo2 where Bar2 :: Foo2
bar = Bar2

when I run

ghci> ParseOk mod <- parseFile "/tmp/Test.hs"
ghci> annotate (resolve [mod] mempty)  mod

the mention of Bar1 is correctly annotated as a ValueBinder

(Scoped None (SrcSpanInfo {srcInfoSpan = SrcSpan "/tmp/Test.hs" 3 13 3 17, srcInfoPoints = []})) (Ident (Scoped ValueBinder (SrcSpanInfo {srcInfoSpan = SrcSpan "/tmp/Test.hs" 3 13 3 17, srcInfoPoints = []})) "Bar1")

but Bar2 is labeled as None:

(Scoped None (SrcSpanInfo {srcInfoSpan = SrcSpan "/tmp/Test.hs" 4 17 4 29, srcInfoPoints = [SrcSpan "/tmp/Test.hs" 4 22 4 24]})) (Ident (Scoped None (SrcSpanInfo {srcInfoSpan = SrcSpan "/tmp/Test.hs" 4 17 4 21, srcInfoPoints = []})) "Bar2") 

I’d assume these should be handled the same?