rnHsSigType, rnHsTypeFVs, rnHsSigTypeFVs,
rnPat, rnPats, rnPatsAndThen, -- Here because it's not part
rnOverLit, litFVs, -- of any mutual recursion
rnHsSigType, rnHsTypeFVs, rnHsSigTypeFVs,
rnPat, rnPats, rnPatsAndThen, -- Here because it's not part
rnOverLit, litFVs, -- of any mutual recursion
- precParseErr, sectionPrecErr, dupFieldErr, patSigErr
+ precParseErr, sectionPrecErr, dupFieldErr, patSigErr, checkTupSize
import PrelNames( cCallishClassKeys, eqStringName, eqClassName, ordClassName,
negateName, minusName, lengthPName, indexPName, plusIntegerName, fromIntegerName,
timesIntegerName, ratioDataConName, fromRationalName, cCallableClassName )
import PrelNames( cCallishClassKeys, eqStringName, eqClassName, ordClassName,
negateName, minusName, lengthPName, indexPName, plusIntegerName, fromIntegerName,
timesIntegerName, ratioDataConName, fromRationalName, cCallableClassName )
import TysWiredIn ( intTyCon )
import TysPrim ( charPrimTyCon, addrPrimTyCon, intPrimTyCon,
floatPrimTyCon, doublePrimTyCon )
import TysWiredIn ( intTyCon )
import TysPrim ( charPrimTyCon, addrPrimTyCon, intPrimTyCon,
floatPrimTyCon, doublePrimTyCon )
implicit_fvs = mkFVs [lengthPName, indexPName]
rnPat (TuplePat pats boxed)
implicit_fvs = mkFVs [lengthPName, indexPName]
rnPat (TuplePat pats boxed)
+checkTupSize :: Int -> RnM ()
+checkTupSize tup_size
+ | tup_size <= mAX_TUPLE_SIZE
+ = returnM ()
+ | otherwise
+ = addErr (sep [ptext SLIT("A") <+> int tup_size <> ptext SLIT("-tuple is too large for GHC"),
+ nest 2 (parens (ptext SLIT("max size is") <+> int mAX_TUPLE_SIZE)),
+ nest 2 (ptext SLIT("Workaround: use nested tuples or define a data type"))])
+