helium-1.8: src/Helium/StaticAnalysis/Inferencers/LocalInfo.ag
-----------------------------------------------------------------------------
-- |The Helium Compiler : Static Analysis
--
-- Maintainer : bastiaan@cs.uu.nl
-- Stability : experimental
-- Portability : unknown
--
-- Make (local) information about the current node available
-- as a local attribute
---------------------------------------------------------------------------------------
-- FunctionBinding
SEM FunctionBinding
| Hole
loc . localInfo = LocalInfo { self = UHA_FB @self
, assignedType = Nothing
, monos = @lhs.monos
}
| FunctionBinding
loc . localInfo = LocalInfo { self = UHA_FB @self
, assignedType = Nothing
, monos = @lhs.monos
}
---------------------------------------------------------------------------------------
-- Right-hand side expression
SEM RightHandSide
| Expression
loc . localInfo = LocalInfo { self = UHA_RHS @self
, assignedType = Nothing
, monos = @lhs.monos
}
| Guarded
loc . localInfo = LocalInfo { self = UHA_RHS @self
, assignedType = Nothing
, monos = @lhs.monos
}
---------------------------------------------------------------------------------------
-- Declaration
SEM Declaration
| FunctionBindings
loc . localInfo = LocalInfo { self = UHA_Decl @self
, assignedType = Nothing
, monos = @lhs.monos
}
| PatternBinding
loc . localInfo = LocalInfo { self = UHA_Decl @self
, assignedType = Nothing
, monos = @lhs.monos
}
---------------------------------------------------------------------------------------
-- Expression
SEM Expression
| Literal
loc . localInfo = LocalInfo { self = UHA_Expr @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| Variable
loc . localInfo = LocalInfo { self = UHA_Expr @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| Hole
loc . localInfo = LocalInfo { self = UHA_Expr @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| Constructor
loc . localInfo = LocalInfo { self = UHA_Expr @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| NormalApplication
loc . localInfo = LocalInfo { self = UHA_Expr @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| InfixApplication
loc . localInfo = LocalInfo { self = UHA_Expr @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| If
loc . localInfo = LocalInfo { self = UHA_Expr @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| Lambda
loc . localInfo = LocalInfo { self = UHA_Expr @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| Case
loc . localInfo = LocalInfo { self = UHA_Expr @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| Let
loc . localInfo = LocalInfo { self = UHA_Expr @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| Do
loc . localInfo = LocalInfo { self = UHA_Expr @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| List
loc . localInfo = LocalInfo { self = UHA_Expr @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| Tuple
loc . localInfo = LocalInfo { self = UHA_Expr @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| Comprehension
loc . localInfo = LocalInfo { self = UHA_Expr @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| Typed
loc . localInfo = LocalInfo { self = UHA_Expr @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| Enum
loc . localInfo = LocalInfo { self = UHA_Expr @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| Negate
loc . localInfo = LocalInfo { self = UHA_Expr @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| NegateFloat
loc . localInfo = LocalInfo { self = UHA_Expr @self
, assignedType = Just @beta
, monos = @lhs.monos
}
---------------------------------------------------------------------------------------
-- Pattern
SEM Pattern
| Hole
loc . localInfo = LocalInfo { self = UHA_Pat @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| Literal
loc . localInfo = LocalInfo { self = UHA_Pat @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| Variable
loc . localInfo = LocalInfo { self = UHA_Pat @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| Constructor
loc . localInfo = LocalInfo { self = UHA_Pat @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| InfixConstructor
loc . localInfo = LocalInfo { self = UHA_Pat @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| List
loc . localInfo = LocalInfo { self = UHA_Pat @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| Tuple
loc . localInfo = LocalInfo { self = UHA_Pat @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| Negate
loc . localInfo = LocalInfo { self = UHA_Pat @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| As
loc . localInfo = LocalInfo { self = UHA_Pat @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| Wildcard
loc . localInfo = LocalInfo { self = UHA_Pat @self
, assignedType = Just @beta
, monos = @lhs.monos
}
| NegateFloat
loc . localInfo = LocalInfo { self = UHA_Pat @self
, assignedType = Just @beta
, monos = @lhs.monos
}
---------------------------------------------------------------------------------------
-- Statement
SEM Statement
| Expression
loc . localInfo = LocalInfo { self = UHA_Stat @self
, assignedType = Nothing
, monos = @lhs.monos
}
| Let
loc . localInfo = LocalInfo { self = UHA_Stat @self
, assignedType = Nothing
, monos = @lhs.monos
}
| Generator
loc . localInfo = LocalInfo { self = UHA_Stat @self
, assignedType = Nothing
, monos = @lhs.monos
}
| Empty
loc . localInfo = LocalInfo { self = UHA_Stat @self
, assignedType = Nothing
, monos = @lhs.monos
}
---------------------------------------------------------------------------------------
-- Qualifier
SEM Qualifier
| Guard
loc . localInfo = LocalInfo { self = UHA_Qual @self
, assignedType = Nothing
, monos = @lhs.monos
}
| Let
loc . localInfo = LocalInfo { self = UHA_Qual @self
, assignedType = Nothing
, monos = @lhs.monos
}
| Generator
loc . localInfo = LocalInfo { self = UHA_Qual @self
, assignedType = Nothing
, monos = @lhs.monos
}
| Empty
loc . localInfo = LocalInfo { self = UHA_Qual @self
, assignedType = Nothing
, monos = @lhs.monos
}
---------------------------------------------------------------------------------------
-- (Non-terminals above) Declarations
SEM Body
| Body
loc . declInfo = LocalInfo { self = UHA_Decls @declarations.self
, assignedType = Nothing
, monos = @lhs.monos
}
SEM MaybeDeclarations
| Just
loc . declInfo = LocalInfo { self = UHA_Decls @declarations.self
, assignedType = Nothing
, monos = @lhs.monos
}
SEM Expression
| Let
loc . declInfo = LocalInfo { self = UHA_Decls @declarations.self
, assignedType = Nothing
, monos = @lhs.monos
}
SEM Statement
| Let
loc . declInfo = LocalInfo { self = UHA_Decls @declarations.self
, assignedType = Nothing
, monos = @lhs.monos
}
SEM Qualifier
| Let
loc . declInfo = LocalInfo { self = UHA_Decls @declarations.self
, assignedType = Nothing
, monos = @lhs.monos
}