Ticket #5929: TypeCheck.hs

File TypeCheck.hs, 4.5 KB (added by passalaqua, 2 years ago)

Code that triggers the warning.

Line 
1module TypeCheck where
2
3data SourcePos = SourcePos Int Int deriving Show
4
5data Ty = TyProgram | TyPlatform | TyInterpreter | TyCompiler | TyExecute | TyCompile
6        deriving Show
7data TyError = TyError SourcePos String Ty Ty 
8        deriving Show
9
10type Ident = String
11-- Diag --------------------------------------------------------
12data Diag = Diag (SourcePos) (Diag_)
13-- cata
14sem_Diag :: Diag ->
15            T_Diag
16sem_Diag (Diag _pos _d) =
17    (sem_Diag_Diag _pos (sem_Diag_ _d))
18-- semantic domain
19type T_Diag = ( SourcePos,( Ty ),([TyError]))
20data Inh_Diag = Inh_Diag {}
21data Syn_Diag = Syn_Diag {pos_Syn_Diag :: SourcePos,ty_Syn_Diag :: ( Ty ),tyErrs_Syn_Diag :: ([TyError])}
22sem_Diag_Diag :: SourcePos ->
23                 T_Diag_ ->
24                 T_Diag
25sem_Diag_Diag pos_ d_ =
26    (let _lhsOpos :: SourcePos
27         _dOpos :: SourcePos
28         _lhsOtyErrs :: ([TyError])
29         _lhsOty :: ( Ty )
30         _dIty :: ( Ty )
31         _dItyErrs :: ([TyError])
32         _lhsOpos = pos_
33         _dOpos = pos_
34         _lhsOtyErrs = _dItyErrs
35         _lhsOty = _dIty
36         ( _dIty,_dItyErrs) = d_ _dOpos
37     in  ( _lhsOpos,_lhsOty,_lhsOtyErrs))
38-- Diag_ -------------------------------------------------------
39
40data Diag_ = Compile (Diag) (Diag)
41           | Compiler (Ident) (Ident) (Ident) (Ident)
42           | Execute (Diag) (Diag)
43           | Interpreter (Ident) (Ident) (Ident)
44           | Platform (Ident)
45           | Program (Ident) (Ident)
46
47-- cata
48sem_Diag_ :: Diag_ ->
49             T_Diag_
50sem_Diag_ (Compile _d1 _d2) = (sem_Diag__Compile (sem_Diag _d1) (sem_Diag _d2))
51sem_Diag_ (Compiler _c _l1 _l2 _m) = (sem_Diag__Compiler _c _l1 _l2 _m)
52sem_Diag_ (Execute _d1 _d2) = (sem_Diag__Execute (sem_Diag _d1) (sem_Diag _d2))
53sem_Diag_ (Interpreter _i _l _m) = (sem_Diag__Interpreter _i _l _m)
54sem_Diag_ (Platform _m) = (sem_Diag__Platform _m)
55sem_Diag_ (Program _p _l) = (sem_Diag__Program _p _l)
56
57-- semantic domain
58
59type T_Diag_ = SourcePos ->
60               ( ( Ty ),([TyError]))
61data Inh_Diag_ = Inh_Diag_ {pos_Inh_Diag_ :: SourcePos}
62data Syn_Diag_ = Syn_Diag_ {ty_Syn_Diag_ :: ( Ty ),tyErrs_Syn_Diag_ :: ([TyError])}
63sem_Diag__Compile :: T_Diag ->
64                     T_Diag ->
65                     T_Diag_
66sem_Diag__Compile d1_ d2_ =
67    (\ _lhsIpos ->
68         (let _lhsOty :: ( Ty )
69              _lhsOtyErrs :: ([TyError])
70              -- _d1Ipos :: SourcePos
71              -- _d1Ity :: ( Ty )
72              -- _d1ItyErrs :: ([TyError])
73              _d2Ipos :: SourcePos
74              _d2Ity :: ( Ty )
75              _d2ItyErrs :: ([TyError])
76              _lhsOty = TyCompile
77              _lhsOtyErrs =
78                  (
79                   case _d1Ity of
80                        TyPlatform -> []
81                        otherwise -> []
82                   )
83              ( _d1Ipos,_d1Ity,_d1ItyErrs) =
84                  d1_
85              ( _d2Ipos,_d2Ity,_d2ItyErrs) =
86                  d2_
87          in  ( _lhsOty,_lhsOtyErrs)))
88sem_Diag__Compiler :: Ident ->
89                      Ident ->
90                      Ident ->
91                      Ident ->
92                      T_Diag_
93sem_Diag__Compiler c_ l1_ l2_ m_ =
94    (\ _lhsIpos ->
95         (let _lhsOty :: ( Ty )
96              _lhsOtyErrs :: ([TyError])
97              _lhsOty = TyCompiler
98              _lhsOtyErrs = []
99          in  ( _lhsOty,_lhsOtyErrs)))
100sem_Diag__Execute :: T_Diag ->
101                     T_Diag ->
102                     T_Diag_
103sem_Diag__Execute = undefined
104sem_Diag__Interpreter :: Ident ->
105                         Ident ->
106                         Ident ->
107                         T_Diag_
108sem_Diag__Interpreter i_ l_ m_ =
109    (\ _lhsIpos ->
110         (let _lhsOty :: ( Ty )
111              _lhsOtyErrs :: ([TyError])
112              _lhsOty = TyInterpreter
113              _lhsOtyErrs = []
114          in  ( _lhsOty,_lhsOtyErrs)))
115sem_Diag__Platform :: Ident ->
116                      T_Diag_
117sem_Diag__Platform m_ =
118    (\ _lhsIpos ->
119         (let _lhsOty :: ( Ty )
120              _lhsOtyErrs :: ([TyError])
121              _lhsOty = TyPlatform
122              _lhsOtyErrs = []
123          in  ( _lhsOty,_lhsOtyErrs)))
124sem_Diag__Program :: Ident ->
125                     Ident ->
126                     T_Diag_
127sem_Diag__Program p_ l_ =
128    (\ _lhsIpos ->
129         (let _lhsOty :: ( Ty )
130              _lhsOtyErrs :: ([TyError])
131              _lhsOty = TyProgram
132              _lhsOtyErrs = []
133          in  ( _lhsOty,_lhsOtyErrs)))