X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=CoreTools.hs;h=3569d53b06e98b1c155cee605cd96e626067d69f;hb=65d99830e416463d66f97581ece93da49f746778;hp=3f9b33c8849c6ebe3ab921b931cb35be165fa44b;hpb=5ce8aec0615804d8e7da0bf05f64a8669c46dfd2;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git diff --git a/CoreTools.hs b/CoreTools.hs index 3f9b33c..3569d53 100644 --- a/CoreTools.hs +++ b/CoreTools.hs @@ -93,12 +93,14 @@ ranged_word_bound ty = -- | Get the length of a FSVec type tfvec_len :: Type.Type -> Int -tfvec_len ty = - eval_tfp_int len +tfvec_len ty = eval_tfp_int (tfvec_len_ty ty) + +tfvec_len_ty :: Type.Type -> Type.Type +tfvec_len_ty ty = len where args = case Type.splitTyConApp_maybe ty of Just (tycon, args) -> args - Nothing -> error $ "CoreTools.tfvec_len Not a vector type: " ++ (pprString ty) + Nothing -> error $ "\nCoreTools.tfvec_len_ty: Not a vector type: " ++ (pprString ty) [len, el_ty] = args -- | Get the element type of a TFVec type @@ -107,7 +109,7 @@ tfvec_elem ty = el_ty where args = case Type.splitTyConApp_maybe ty of Just (tycon, args) -> args - Nothing -> error $ "CoreTools.tfvec_len Not a vector type: " ++ (pprString ty) + Nothing -> error $ "\nCoreTools.tfvec_len: Not a vector type: " ++ (pprString ty) [len, el_ty] = args -- Is this a wild binder? @@ -165,6 +167,7 @@ has_free_vars = not . VarSet.isEmptyVarSet . CoreFVs.exprFreeVars -- simple Var CoreExprs, not complexer ones. exprToVar :: CoreSyn.CoreExpr -> Var.Id exprToVar (CoreSyn.Var id) = id +exprToVar expr = error $ "\nCoreTools.exprToVar: Not a var: " ++ show expr -- Removes all the type and dictionary arguments from the given argument list, -- leaving only the normal value arguments. The type given is the type of the