Merge branch 'master' of http://git.stderr.nl/matthijs/master-project/cλash
authorChristiaan Baaij <baaijcpr@wlan233104.mobiel.utwente.nl>
Thu, 25 Mar 2010 08:52:36 +0000 (09:52 +0100)
committerChristiaan Baaij <baaijcpr@wlan233104.mobiel.utwente.nl>
Thu, 25 Mar 2010 08:52:36 +0000 (09:52 +0100)
Conflicts:
cλash/CLasH/Normalize.hs
cλash/CLasH/Normalize/NormalizeTools.hs

1  2 
cλash/CLasH/Normalize.hs
cλash/CLasH/VHDL/Constants.hs
cλash/CLasH/VHDL/Generate.hs

index 2e341cf22b70a5568879ce40ec55e2b36ac675ab,2fc34c606f083c3cf05a83b1e2e666a1042614bb..31474d59328bd0342fc6244262061eba736b8c80
@@@ -416,14 -444,16 +444,16 @@@ classopresolution expr@(App (App (Var s
      Nothing -> return expr
      Just cls -> case collectArgs dict of
        (_, []) -> return expr -- Dict is not an application (e.g., not inlined yet)
-       (dictdc, (ty':selectors)) | tyargs_neq ty ty' -> error $ "Normalize.classopresolution: Applying class selector to dictionary without matching type?\n" ++ pprString expr
+       (Var dictdc, (ty':selectors)) | not (Maybe.isJust (Id.isDataConId_maybe dictdc)) -> return expr -- Dictionary is not a datacon yet (but e.g., a top level binder)
 -                                | tyargs_neq ty ty' -> error $ "Applying class selector to dictionary without matching type?\n" ++ pprString expr
++                                | tyargs_neq ty ty' -> error $ "Normalize.classopresolution: Applying class selector to dictionary without matching type?\n" ++ pprString expr
                                  | otherwise ->
          let selector_ids = Class.classSelIds cls in
          -- Find the selector used in the class' list of selectors
          case List.elemIndex sel selector_ids of
 -          Nothing -> error $ "Selector not found in class' selector list? This should not happen!\nExpression: " ++ pprString expr ++ "\nClass: " ++ show cls ++ "\nSelectors: " ++ show selector_ids
 +          Nothing -> error $ "Normalize.classopresolution: Selector not found in class' selector list? This should not happen!\nExpression: " ++ pprString expr ++ "\nClass: " ++ show cls ++ "\nSelectors: " ++ show selector_ids
            -- Get the corresponding argument from the dictionary
            Just n -> change (selectors!!n)
+       (_, _) -> return expr -- Not applying a variable? Don't touch
    where
      -- Compare two type arguments, returning True if they are _not_
      -- equal
Simple merge
Simple merge