hunk ./src/Name.hs 48 +type NameRef = Name + hunk ./src/Parser2.y 385 - | anyvarid 'struct' layout_on binds close { EStruct (Just ($1,False)) (reverse $4) } - | anyvarid 'struct' layout_on binds ';' '..' close { EStruct (Just ($1,True)) (reverse $4) } - | anyvarid 'struct' layout_on '..' close { EStruct (Just ($1,True)) [] } + + | 'struct' layout_on binds ';' '_' close { EStructUpdate Nothing (reverse $3) } + | anyconid 'struct' layout_on binds ';' '_' close { EStructUpdate (Just $1) (reverse $4) } hunk ./src/Parser2.y 432 - : qvarsym { EVar $1 } - | varsym { EVar $1 } - | qconsym { ECon $1 } - | consym { ECon $1 } + : anyvarsym { EVar $1 } + | anyconsym { ECon $1 } hunk ./src/Parser2.y 437 - : qvarsym { EVar $1 } - | varsym0 { EVar $1 } - | qconsym { ECon $1 } - | consym { ECon $1 } + : anyvarsym0 { EVar $1 } + | anyconsym { ECon $1 } hunk ./src/Parser2.y 446 + | '{' layout_off binds ';' '_' '}' { EStructUpdate Nothing (reverse $3) } + hunk ./src/Parser2.y 463 - | anyconid '{' layout_off binds '}' { EStruct (Just ($1,True)) (reverse $4) } + | anyconid '{' layout_off binds '}' { EStruct (Just ($1,True)) (reverse $4) } hunk ./src/Parser2.y 467 - | anyconid '{' layout_off '}' { EStruct (Just ($1,True)) [] } + | anyconid '{' layout_off '}' { EStruct (Just ($1,True)) [] } hunk ./src/Parser2.y 469 - | anyvarid '{' layout_off binds '}' { EList [] } - - | fexp '[' maps ']' { EList [] } + | anyconid '{' layout_off binds ';' '_' '}' { EStructUpdate (Just $1) (reverse $4) } hunk ./src/Parser2.y 475 -maps :: { [Bind] } - : maps ',' map { $3 : $1 } - | map { [$1] } - -map :: { Bind } - : fexp '->' exp { BEqn PWild (RExp $3 []) } - hunk ./src/Parser2.y 529 - | '(' qconsym ')' { $2 } - | '(' consym ')' { $2 } + | '(' anyconsym ')' { $2 } hunk ./src/Parser2.y 531 - | '~' '(' qconsym ')' { annotExplicit $3 } - | '~' '(' consym ')' { annotExplicit $3 } + | '~' '(' anyconsym ')' { annotExplicit $3 } hunk ./src/Parser2.y 551 + | maps { EListUpdate (reverse $1) } hunk ./src/Parser2.y 556 - + +maps :: { [(Exp,Exp)] } + : maps ',' map { $3 : $1 } + | map { [$1] } + +map :: { (Exp,Exp) } + : exp '->' exp { ($1, $3) } + hunk ./src/Parser2.y 729 -qvarid :: { Name } - : QVARID {% do l <- getSrcLoc; return (qname l $1) } - hunk ./src/Parser2.y 731 - | qvarid { $1 } + | QVARID {% do l <- getSrcLoc; return (qname l $1) } hunk ./src/Parser2.y 754 +anyvarsym :: { Name } + : varsym { $1 } + | qvarsym { $1 } + +anyvarsym0 :: { Name } + : varsym0 { $1 } + | qvarsym { $1 } hunk ./src/Parser2.y 766 -qconid :: { Name } - : QCONID {% do l <- getSrcLoc; return (qname l $1) } - hunk ./src/Parser2.y 768 - | qconid { $1 } + | QCONID {% do l <- getSrcLoc; return (qname l $1) } hunk ./src/Parser2.y 773 -qconsym :: { Name } - : QCONSYM {% do l <- getSrcLoc; return (qname l $1) } - +anyconsym :: { Name } + : consym { $1 } + | QCONSYM {% do l <- getSrcLoc; return (qname l $1) } hunk ./src/Syntax2.hs 49 -data Import = Import Name - | Use Name +data Import = Import NameRef + | Use NameRef hunk ./src/Syntax2.hs 59 - | DTClass Name + | DTClass NameRef hunk ./src/Syntax2.hs 62 - | DInst Name + | DInst NameRef hunk ./src/Syntax2.hs 66 - | DDefault [(Name,Name)] + | DDefault [(NameRef,NameRef)] hunk ./src/Syntax2.hs 92 - | TCon Name + | TCon NameRef hunk ./src/Syntax2.hs 99 - | PClass Name [Type] + | PClass NameRef [Type] hunk ./src/Syntax2.hs 108 - | PCon Name + | PCon NameRef hunk ./src/Syntax2.hs 111 - | PIndex Pat Pat + | PIndex Pat Exp hunk ./src/Syntax2.hs 117 - | PStruct (Maybe (Name,Bool)) [Field] + | PStruct (Maybe (NameRef,Bool)) [Field] hunk ./src/Syntax2.hs 120 -data Field = Field Name Pat +data Field = Field NameRef Pat hunk ./src/Syntax2.hs 123 -data Exp = EVar Name +data Exp = EVar NameRef hunk ./src/Syntax2.hs 126 - | ECon Name - | ESel Exp Name + | ECon NameRef + | ESel Exp NameRef hunk ./src/Syntax2.hs 132 + | EListUpdate [(Exp,Exp)] hunk ./src/Syntax2.hs 135 - | EStruct (Maybe (Name,Bool)) [Bind] + | EStruct (Maybe (NameRef,Bool)) [Bind] + | EStructUpdate (Maybe NameRef) [Bind] hunk ./src/Syntax2.hs 150 - | ESelector Name + | ESelector NameRef hunk ./src/Syntax2.hs 152 - | EDo [Quals] (Maybe Name) (Maybe Name) Stmts - | EClass [Quals] (Maybe Name) (Maybe Name) Stmts - | EAct (Maybe Exp) (Maybe Name) Stmts -- 1st argument is the optional deadline! - | EReq (Maybe Name) Stmts + | EDo [Quals] (Maybe Name) (Maybe NameRef) Stmts + | EClass [Quals] (Maybe Name) (Maybe NameRef) Stmts + | EAct (Maybe Exp) (Maybe NameRef) Stmts -- 1st argument is the optional deadline! + | EReq (Maybe NameRef) Stmts hunk ./src/Syntax2.hs 370 + pr (EStructUpdate Nothing bs) = braces (hpr ';' bs <> text ";" <+> text "_") + pr (EStructUpdate (Just c) bs) = pr c <+> braces (hpr ';' bs <> text ";" <+> text "_") hunk ./src/Syntax2.hs 382 + pr (EListUpdate lmap) = brackets (hpr ';' lmap) hunk ./src/Syntax2.hs 385 +instance Pr (Exp,Exp) where + pr (i,e) = pr i <+> text "->" <+> pr e + hunk ./src/Syntax2.hs 566 + put (PIndex a b) = putWord8 11 >> put a >> put b hunk ./src/Syntax2.hs 581 + 11 -> get >>= \a -> get >>= \b -> return (PIndex a b) hunk ./src/Syntax2.hs 622 + put (EListUpdate a) = putWord8 31 >> put a + put (EIndex a b) = putWord8 32 >> put a >> put b + put (EStructUpdate a b) = putWord8 33 >> put a >> put b hunk ./src/Syntax2.hs 659 + 31 -> get >>= \a -> return (EListUpdate a) + 32 -> get >>= \a -> get >>= \b -> return (EIndex a b) + 33 -> get >>= \a -> get >>= \b -> return (EStructUpdate a b) hunk ./src/Syntax2.hs 745 -exp2pat (EIndex p1 p2) = PIndex (exp2pat p1) (exp2pat p2) +exp2pat (EIndex p e) = PIndex (exp2pat p) e hunk ./src/Syntax22Syntax.hs 114 -sPat (PIndex p p') = Syntax.PAp (Syntax.PAp (Syntax.PVar (prim IndexArray)) (sPat p)) (sPat p') +sPat (PIndex p e) = Syntax.PAp (Syntax.PAp (Syntax.PVar (prim IndexArray)) (sPat p)) (sPat (exp2pat e))