-rnOverLit (HsIntegral i from_integer)
- = lookupOccRn from_integer `thenRn` \ from_integer' ->
- (if inIntRange i then
- returnRn emptyFVs
- else
- lookupOrigNames [plusInteger_RDR, timesInteger_RDR]
- ) `thenRn` \ ns ->
- returnRn (HsIntegral i from_integer', ns `addOneFV` from_integer')
-
-rnOverLit (HsFractional i n)
- = lookupOccRn n `thenRn` \ n' ->
- lookupOrigNames [ratioDataCon_RDR, plusInteger_RDR, timesInteger_RDR] `thenRn` \ ns' ->
+rnOverLit (HsIntegral i from_integer_name)
+ = lookupSyntaxName from_integer_name `thenRn` \ from_integer_name' ->
+ if inIntRange i then
+ returnRn (HsIntegral i from_integer_name', unitFV from_integer_name')
+ else
+ lookupOrigNames [plusInteger_RDR, timesInteger_RDR] `thenRn` \ ns ->
+ -- Big integer literals are built, using + and *,
+ -- out of small integers (DsUtils.mkIntegerLit)
+ -- [NB: plusInteger, timesInteger aren't rebindable...
+ -- they are used to construct the argument to fromInteger,
+ -- which is the rebindable one.]
+ returnRn (HsIntegral i from_integer_name', ns `addOneFV` from_integer_name')
+
+rnOverLit (HsFractional i from_rat_name)
+ = lookupSyntaxName from_rat_name `thenRn` \ from_rat_name' ->
+ lookupOrigNames [ratioDataCon_RDR, plusInteger_RDR, timesInteger_RDR] `thenRn` \ ns ->