aboutsummaryrefslogtreecommitdiff
path: root/frontend/syntax.dcl
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/syntax.dcl')
-rw-r--r--frontend/syntax.dcl20
1 files changed, 9 insertions, 11 deletions
diff --git a/frontend/syntax.dcl b/frontend/syntax.dcl
index 1282891..4efb005 100644
--- a/frontend/syntax.dcl
+++ b/frontend/syntax.dcl
@@ -362,7 +362,7 @@ cNameLocationDependent :== True
:: ClassDefInfos :== {# .{! [TypeKind]}}
:: MemberDef =
- { me_ident :: !Ident
+ { me_ident :: !Ident
, me_class :: !Global Index
, me_offset :: !Index
, me_type :: !SymbolType
@@ -373,7 +373,7 @@ cNameLocationDependent :== True
}
:: GenericDef =
- { gen_ident :: !Ident // the generics name in IC_Generic
+ { gen_ident :: !Ident // the generics name in IC_Generic
, gen_member_ident :: !Ident // the generics name in IC_Expression
, gen_pos :: !Position
, gen_type :: !SymbolType // Generic type (st_vars include generic type vars)
@@ -872,7 +872,6 @@ cNonRecursiveAppl :== False
/*
OverloadedCall contains (type) information about functions that are overloaded. This structure is built during type checking
and used after (standard) unification to insert the proper instances of the corresponding functions.
-
*/
:: OverloadedCall =
@@ -887,7 +886,7 @@ cNonRecursiveAppl :== False
ct_result_type : the type of the result (of each pattern)
ct_cons_types : the types of the arguments of each pattern constructor
*/
-
+
:: CaseType =
{ ct_pattern_type :: !AType
, ct_result_type :: !AType
@@ -938,18 +937,16 @@ cNonRecursiveAppl :== False
, tc_var :: !VarInfoPtr
}
-//AA: class in a type context is either normal class or a generic class
:: TCClass = TCClass !(Global DefinedSymbol) // Normal class
| TCGeneric !GenericTypeContext // Generic class
| TCQualifiedIdent !Ident !String
-:: GenericTypeContext =
- { gtc_generic :: !(Global DefinedSymbol)
+:: GenericTypeContext =
+ { gtc_generic :: !Global DefinedSymbol
, gtc_kind :: !TypeKind
- , gtc_class :: !(Global DefinedSymbol) // generated class
- , gtc_dictionary:: !(Global DefinedSymbol) // HACK: dictionary different from the one contained in the class
+ , gtc_class :: !Global DefinedSymbol // generated class
+ , gtc_generic_dict :: !GlobalIndex // HACK: dictionary different from the one contained in the class
}
-//..AA
:: AType =
{ at_attribute :: !TypeAttribute
@@ -973,7 +970,6 @@ cNonRecursiveAppl :== False
| GTV !TypeVar
| TV !TypeVar
| TempV !TempVarId /* Auxiliary, used during type checking */
-
| TQV TypeVar
| TempQV !TempVarId /* Auxiliary, used during type checking */
@@ -981,6 +977,8 @@ cNonRecursiveAppl :== False
| TLifted !TypeVar /* Auxiliary, used during type checking of lifted arguments */
| TQualifiedIdent !Ident !String ![AType]
+ | TGenericFunctionInDictionary !(Global DefinedSymbol) !TypeKind !GlobalIndex /*GenericDict*/
+
| TE
:: ConsVariable = CV !TypeVar