1
0
mirror of https://github.com/golang/go synced 2024-11-24 18:40:14 -07:00
go/test/fixedbugs
Alberto Donizetti e99dafc4a8 cmd/compile: fix misleading "truncated to int" messages
When defining an int const, the compiler tries to cast the RHS
expression to int. The cast may fail for three reasons:

  1. expr is an integer constant that overflows int
  2. expr is a floating point constant
  3. expr is a complex constant, or not a number

In the second case, in order to print a sensible error message, we
must distinguish between a floating point constant that should be
included in the error message and a floating point constant that
cannot be reasonably formatted for inclusion in an error message.

For example, in:

  const a int = 1.1
  const b int = 1 + 1e-100

a is in the former group, while b is in the latter, since the floating
point value resulting from the evaluation of the rhs of the assignment
(1.00...01) is too long to be fully printed in an error message, and
cannot be shortened without making the error message misleading
(rounding or truncating it would result in a "1", which looks like an
integer constant, and it makes little sense in an error message about
an invalid floating point expression).

To fix this problem, we try to format the float value using fconv
(which is used by the error reporting mechanism to format float
arguments), and then parse the resulting string back to a
big.Float. If the result is an integer, we assume that expr is a float
value that cannot be reasonably be formatted as a string, and we emit
an error message that does not include its string representation.

Also, change the error message for overflows to a more conservative
"integer too large", which does not mention overflows that are only
caused by an internal implementation restriction.

Also, change (*Mpint) SetFloat so that it returns a bool (instead of
0/-1 for success/failure).

Fixes #11371

Change-Id: Ibbc73e2ed2eaf41f07827b0649d0eb637150ecaa
Reviewed-on: https://go-review.googlesource.com/35411
Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com>
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
2017-03-07 19:34:22 +00:00
..
bug083.dir
bug088.dir
bug106.dir
bug133.dir
bug160.dir
bug191.dir
bug222.dir
bug248.dir
bug282.dir
bug302.dir
bug306.dir
bug313.dir
bug322.dir
bug324.dir
bug335.dir
bug345.dir
bug367.dir
bug369.dir
bug377.dir
bug382.dir
bug392.dir
bug396.dir
bug404.dir
bug407.dir
bug414.dir
bug415.dir
bug424.dir
bug437.dir
bug448.dir
bug460.dir
bug465.dir
bug466.dir
bug467.dir
bug468.dir
bug472.dir
bug478.dir
bug479.dir
bug480.dir
bug488.dir
bug492.dir
gcc67968.dir
issue3552.dir
issue4252.dir
issue4326.dir
issue4370.dir
issue4510.dir
issue4590.dir
issue4879.dir
issue4932.dir
issue4964.dir
issue5105.dir
issue5125.dir
issue5259.dir
issue5260.dir
issue5291.dir
issue5470.dir
issue5614.dir
issue5755.dir
issue5910.dir
issue5957.dir
issue6295.dir
issue6513.dir
issue6789.dir
issue7023.dir
issue7648.dir
issue7995b.dir
issue8060.dir
issue8280.dir
issue9355.dir
issue9537.dir
issue9608.dir
issue10066.dir
issue10219.dir
issue10700.dir
issue11053.dir
issue12677.dir
issue13777.dir
issue14164.dir
issue14331.dir
issue15071.dir
issue15470.dir
issue15514.dir
issue15548.dir
issue15572.dir
issue15609.dir
issue15646.dir
issue15838.dir
issue15920.dir
issue16133.dir
issue16317.dir
issue16616.dir
bug000.go
bug002.go
bug003.go
bug004.go
bug005.go
bug006.go
bug007.go
bug008.go
bug009.go
bug010.go
bug011.go
bug012.go
bug013.go
bug014.go
bug015.go
bug016.go
bug017.go
bug020.go
bug021.go
bug022.go
bug023.go
bug024.go
bug026.go
bug027.go
bug028.go
bug030.go
bug031.go
bug035.go
bug037.go
bug039.go
bug040.go
bug045.go
bug046.go
bug047.go
bug048.go
bug049.go
bug050.go
bug051.go
bug052.go
bug053.go
bug054.go
bug055.go
bug056.go
bug057.go
bug058.go
bug059.go
bug060.go
bug061.go
bug062.go
bug063.go
bug064.go
bug065.go
bug066.go
bug067.go
bug068.go
bug069.go
bug070.go
bug071.go
bug072.go
bug073.go
bug074.go
bug075.go
bug076.go
bug077.go
bug078.go
bug080.go
bug081.go
bug082.go
bug083.go
bug084.go
bug085.go
bug086.go
bug087.go
bug088.go
bug089.go
bug090.go
bug091.go
bug092.go
bug093.go
bug094.go
bug096.go
bug097.go
bug098.go
bug099.go
bug101.go
bug102.go
bug103.go
bug104.go
bug106.go
bug107.go
bug108.go
bug109.go
bug110.go
bug111.go
bug112.go
bug113.go
bug114.go
bug115.go
bug116.go
bug117.go
bug118.go
bug119.go
bug120.go
bug121.go
bug122.go
bug123.go
bug126.go
bug127.go
bug128.go
bug129.go
bug130.go
bug131.go
bug132.go
bug133.go
bug135.go
bug136.go
bug137.go
bug139.go
bug140.go
bug141.go
bug142.go
bug143.go
bug144.go
bug145.go
bug146.go
bug147.go
bug148.go
bug149.go
bug150.go
bug151.go
bug152.go
bug154.go
bug155.go
bug156.go
bug157.go
bug158.go
bug159.go
bug160.go
bug161.go
bug163.go
bug164.go
bug165.go
bug167.go
bug168.go
bug169.go
bug170.go
bug171.go
bug172.go
bug173.go
bug174.go
bug175.go
bug176.go
bug177.go
bug178.go
bug179.go
bug180.go
bug181.go
bug182.go
bug183.go
bug184.go
bug185.go
bug186.go
bug187.go
bug188.go
bug189.go
bug190.go
bug191.go
bug192.go
bug193.go
bug194.go
bug195.go
bug196.go
bug197.go
bug198.go
bug199.go
bug200.go
bug201.go
bug202.go
bug203.go
bug204.go
bug205.go
bug206.go
bug206.out
bug207.go
bug208.go
bug209.go
bug211.go
bug212.go
bug213.go
bug214.go
bug215.go
bug216.go
bug217.go
bug218.go
bug219.go
bug221.go
bug222.go
bug223.go
bug224.go
bug225.go
bug227.go
bug228.go
bug229.go
bug230.go
bug231.go
bug232.go
bug233.go
bug234.go
bug235.go
bug236.go
bug237.go
bug238.go
bug239.go
bug240.go
bug241.go
bug242.go
bug243.go
bug244.go
bug245.go
bug246.go
bug247.go
bug248.go
bug249.go
bug250.go
bug251.go
bug252.go
bug253.go
bug254.go
bug255.go
bug256.go
bug257.go
bug258.go
bug259.go
bug260.go
bug261.go
bug262.go
bug263.go
bug264.go
bug265.go
bug266.go
bug267.go
bug269.go
bug271.go
bug272.go
bug273.go
bug274.go
bug275.go
bug276.go
bug277.go
bug278.go
bug279.go
bug280.go
bug281.go
bug282.go
bug283.go
bug284.go
bug285.go
bug286.go
bug287.go
bug288.go
bug289.go
bug290.go
bug291.go
bug292.go
bug293.go
bug294.go
bug295.go
bug296.go
bug297.go
bug298.go
bug299.go
bug300.go
bug301.go
bug302.go
bug303.go
bug304.go
bug305.go
bug306.go
bug307.go
bug308.go
bug309.go
bug311.go
bug312.go
bug313.go
bug314.go
bug315.go
bug316.go
bug317.go
bug318.go
bug319.go
bug320.go
bug321.go
bug322.go
bug323.go
bug324.go
bug325.go
bug326.go
bug327.go
bug328.go
bug328.out
bug329.go
bug330.go
bug331.go
bug332.go
bug333.go
bug334.go
bug335.go
bug336.go
bug337.go
bug338.go
bug339.go
bug340.go
bug341.go
bug342.go
bug343.go
bug344.go
bug345.go
bug346.go
bug347.go
bug348.go
bug349.go
bug350.go
bug351.go
bug352.go
bug353.go
bug354.go
bug355.go
bug356.go
bug357.go
bug358.go
bug361.go
bug362.go
bug363.go
bug364.go
bug365.go
bug366.go
bug367.go
bug368.go
bug369.go
bug370.go
bug371.go
bug372.go
bug373.go
bug374.go
bug375.go
bug376.go
bug377.go
bug378.go
bug379.go
bug380.go
bug381.go
bug382.go
bug383.go
bug384.go
bug385_32.go
bug385_64.go
bug386.go
bug387.go
bug388.go
bug389.go
bug390.go
bug391.go
bug392.go
bug393.go
bug394.go
bug396.go
bug397.go
bug398.go
bug399.go
bug401.go
bug402.go
bug403.go
bug404.go
bug405.go
bug406.go
bug407.go
bug409.go
bug409.out
bug410.go
bug411.go
bug412.go
bug413.go
bug414.go
bug415.go
bug416.go
bug417.go
bug418.go
bug419.go
bug420.go
bug421.go
bug422.go
bug423.go
bug424.go
bug425.go
bug426.go
bug427.go
bug428.go
bug429_run.go
bug429.go
bug430.go
bug431.go
bug432.go
bug433.go
bug434.go
bug435.go
bug436.go
bug437.go
bug438.go
bug439.go
bug440_32.go
bug440_64.go
bug441.go
bug442.go
bug443.go
bug444.go
bug445.go
bug446.go
bug447.go
bug448.go
bug449.go
bug450.go
bug451.go
bug452.go
bug453.go
bug454.go
bug455.go
bug456.go
bug457.go
bug458.go
bug459.go
bug460.go
bug461.go
bug462.go
bug463.go
bug464.go
bug465.go
bug466.go
bug467.go
bug468.go
bug470.go
bug471.go
bug472.go
bug473.go
bug474.go
bug475.go
bug476.go
bug477.go
bug478.go
bug479.go
bug480.go
bug481.go
bug482.go
bug483.go
bug484.go
bug485.go
bug486.go
bug487.go
bug488.go
bug489.go
bug490.go
bug491.go
bug492.go
bug493.go
bug494.go
bug495.go
bug496.go
bug497.go
bug498.go
bug499.go
bug500.go
bug501.go
bug1515.go
bug13343.go
bug19403.go
gcc61204.go
gcc61244.go
gcc61246.go
gcc61248.go
gcc61253.go
gcc61254.go
gcc61255.go
gcc61258.go
gcc61264.go
gcc61265.go
gcc61273.go
gcc65755.go
gcc67968.go
gcc78763.go
issue887.go
issue1304.go
issue2615.go
issue3552.go
issue3705.go
issue3783.go
issue3925.go
issue4066.go
issue4085a.go
issue4085b.go
issue4097.go
issue4099.go
issue4162.go
issue4167.go
issue4215.go
issue4232.go
issue4251.go
issue4252.go
issue4264.go
issue4283.go
issue4313.go
issue4316.go
issue4323.go
issue4326.go
issue4348.go
issue4353.go
issue4359.go
issue4365.go
issue4370.go
issue4388.go
issue4396a.go
issue4396b.go
issue4399.go
issue4405.go
issue4429.go
issue4448.go
issue4452.go
issue4458.go
issue4463.go
issue4468.go
issue4470.go
issue4495.go
issue4510.go
issue4517a.go
issue4517b.go
issue4517c.go
issue4517d.go
issue4518.go
issue4529.go
issue4545.go
issue4562.go
issue4585.go
issue4590.go
issue4610.go
issue4614.go
issue4618.go
issue4620.go
issue4654.go
issue4663.go
issue4667.go
issue4734.go
issue4748.go
issue4752.go
issue4776.go
issue4785.go
issue4813.go
issue4847.go
issue4879.go
issue4909a.go
issue4909b.go
issue4932.go
issue4964.go
issue5002.go
issue5056.go
issue5089.go
issue5105.go
issue5125.go
issue5162.go
issue5172.go
issue5231.go
issue5244.go
issue5259.go
issue5260.go
issue5291.go
issue5358.go
issue5373.go
issue5470.go
issue5493.go
issue5515.go
issue5581.go
issue5607.go
issue5609.go
issue5614.go
issue5698.go
issue5704.go
issue5753.go
issue5755.go
issue5793.go
issue5809.go
issue5820.go
issue5841.go
issue5856.go
issue5910.go
issue5957.go
issue5963.go
issue6004.go
issue6036.go
issue6055.go
issue6131.go
issue6140.go
issue6247.go
issue6269.go
issue6295.go
issue6298.go
issue6399.go
issue6402.go
issue6403.go
issue6405.go
issue6406.go
issue6500.go
issue6513.go
issue6572.go
issue6671.go
issue6703a.go
issue6703b.go
issue6703c.go
issue6703d.go
issue6703e.go
issue6703f.go
issue6703g.go
issue6703h.go
issue6703i.go
issue6703j.go
issue6703k.go
issue6703l.go
issue6703m.go
issue6703n.go
issue6703o.go
issue6703p.go
issue6703q.go
issue6703r.go
issue6703s.go
issue6703t.go
issue6703u.go
issue6703v.go
issue6703w.go
issue6703x.go
issue6703y.go
issue6703z.go
issue6750.go
issue6772.go
issue6789.go
issue6847.go
issue6866.go
issue6889.go
issue6899.go
issue6899.out
issue6902.go
issue6964.go
issue7023.go
issue7044.go
issue7050.go
issue7083.go
issue7129.go
issue7150.go
issue7153.go
issue7214.go
issue7223.go
issue7272.go
issue7310.go
issue7316.go
issue7346.go
issue7366.go
issue7405.go
issue7419.go
issue7525.go
issue7538a.go
issue7538b.go
issue7547.go
issue7550.go
issue7590.go
issue7648.go
issue7675.go
issue7690.go
issue7740.go
issue7742.go
issue7746.go
issue7760.go
issue7794.go
issue7863.go
issue7867.go
issue7884.go
issue7944.go
issue7995.go
issue7995b.go
issue7996.go
issue7997.go
issue7998.go
issue8004.go
issue8011.go
issue8017.go
issue8028.go
issue8036.go
issue8039.go
issue8047.go
issue8047b.go
issue8048.go
issue8060.go
issue8073.go
issue8074.go
issue8076.go
issue8079.go
issue8132.go
issue8139.go
issue8154.go
issue8155.go
issue8158.go
issue8183.go
issue8280.go
issue8311.go
issue8325.go
issue8336.go
issue8347.go
issue8385.go
issue8440.go
issue8475.go
issue8501.go
issue8507.go
issue8612.go
issue8613.go
issue8620.go
issue8745.go
issue8761.go
issue8836.go
issue8947.go
issue8961.go
issue9006.go
issue9017.go
issue9036.go
issue9076.go
issue9083.go
issue9110.go
issue9321.go
issue9355.go
issue9370.go
issue9432.go
issue9521.go
issue9537.go
issue9604.go
issue9604b.go
issue9608.go
issue9634.go
issue9691.go
issue9731.go
issue9738.go
issue9862_run.go
issue9862.go
issue10047.go
issue10066.go
issue10135.go
issue10219.go
issue10253.go
issue10284.go
issue10320.go
issue10332.go
issue10353.go
issue10407.go
issue10441.go
issue10486.go
issue10607.go
issue10607a.go
issue10654.go
issue10700.go
issue10925.go
issue10958.go
issue10975.go
issue10977.go
issue11053.go
issue11053.out
issue11256.go
issue11286.go
issue11326.go
issue11326b.go
issue11359.go
issue11361.go
issue11362.go
issue11369.go
issue11370.go
issue11371.go
issue11590.go
issue11610.go
issue11614.go
issue11656.go
issue11699.go
issue11737.go
issue11750.go
issue11771.go
issue11790.go
issue11987.go
issue12006.go
issue12108.go
issue12133.go
issue12226.go
issue12347.go
issue12411.go
issue12413.go
issue12525.go
issue12577.go
issue12588.go
issue12677.go
issue12686.go
issue12944.go
issue13160.go
issue13162.go
issue13169.go
issue13171.go
issue13248.go
issue13261.go
issue13262.go
issue13263.go
issue13266.go
issue13268.go
issue13273.go
issue13274.go
issue13319.go
issue13337.go
issue13365.go
issue13415.go
issue13471.go
issue13480.go
issue13485.go
issue13539.go
issue13559.go
issue13587.go
issue13684.go
issue13777.go
issue13779.go
issue13799.go
issue13821.go
issue13821b.go
issue14006.go
issue14010.go
issue14136.go
issue14164.go
issue14331.go
issue14405.go
issue14520.go
issue14553.go
issue14591.go
issue14636.go
issue14646.go
issue14651.go
issue14652.go
issue14725.go
issue14729.go
issue14988.go
issue14999.go
issue15002.go
issue15013.go
issue15039.go
issue15042.go
issue15055.go
issue15084.go
issue15091.go
issue15141.go
issue15175.go
issue15252.go
issue15277.go
issue15281.go
issue15303.go
issue15311.go
issue15329.go
issue15439.go
issue15470.go
issue15514.go
issue15528.go
issue15548.go
issue15550.go
issue15572.go
issue15585.go
issue15602.go
issue15604.go
issue15611.go
issue15646.go
issue15722.go
issue15733.go
issue15747.go
issue15747b.go
issue15838.go
issue15895.go
issue15898.go
issue15902.go
issue15920.go
issue15926.go
issue15961.go
issue15975.go
issue15988.go
issue16008.go
issue16016.go
issue16037_run.go
issue16095.go
issue16130.go
issue16133.go
issue16193.go
issue16249.go
issue16306.go
issue16317.go
issue16331.go
issue16369.go
issue16428.go
issue16439.go
issue16515.go
issue16616.go
issue16733.go
issue16741.go
issue16760.go
issue16804.go
issue16870.go
issue16948.go
issue16949.go
issue16985.go
issue17005.go
issue17038.go
issue17039.go
issue17111.go
issue17194.go
issue17270.go
issue17318.go
issue17328.go
issue17381.go
issue17449.go
issue17551.go
issue17588.go
issue17596.go
issue17631.go
issue17640.go
issue17645.go
issue17710.go
issue17752.go
issue17918.go
issue18092.go
issue18149.go
issue18231.go
issue18392.go
issue18393.go
issue18410.go
issue18459.go
issue18595.go
issue18640.go
issue18655.go
issue18661.go
issue18725.go
issue18747.go
issue18808.go
issue18882.go
issue18906.go
issue18915.go
issue18994.go
issue19012.go
issue19040.go
issue19056.go
issue19084.go
issue19137.go
issue19168.go
issue19182.go
issue19217.go
issue19246.go
issue19275.go
issue19323.go
issue19359.go