From 1da1e432817eaf86734499826c6f3dcc1f65db65 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Tue, 13 Dec 2016 15:00:59 -0800 Subject: [PATCH] go/internal/gccgoimporter: accept missed portions of v2 format Fixes #18301. Change-Id: I990c105904ab62f2225d671bbc10209ec51b12e2 Reviewed-on: https://go-review.googlesource.com/34371 Run-TryBot: Robert Griesemer TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor Reviewed-by: Than McIntosh --- src/go/internal/gccgoimporter/importer_test.go | 7 +++++-- src/go/internal/gccgoimporter/parser.go | 16 ++++++++++++++-- src/go/internal/gccgoimporter/testdata/time.gox | Bin 0 -> 7977 bytes .../internal/gccgoimporter/testdata/unicode.gox | Bin 0 -> 7945 bytes 4 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 src/go/internal/gccgoimporter/testdata/time.gox create mode 100644 src/go/internal/gccgoimporter/testdata/unicode.gox diff --git a/src/go/internal/gccgoimporter/importer_test.go b/src/go/internal/gccgoimporter/importer_test.go index 58abbba94e..2b454701be 100644 --- a/src/go/internal/gccgoimporter/importer_test.go +++ b/src/go/internal/gccgoimporter/importer_test.go @@ -96,8 +96,11 @@ var importerTests = [...]importerTest{ {pkgpath: "complexnums", name: "PN", want: "const PN untyped complex", wantval: "(1 + -1i)"}, {pkgpath: "complexnums", name: "PP", want: "const PP untyped complex", wantval: "(1 + 1i)"}, {pkgpath: "conversions", name: "Bits", want: "const Bits Units", wantval: `"bits"`}, - // TODO: enable this entry once bug has been tracked down - //{pkgpath: "imports", wantinits: []string{"imports..import", "fmt..import", "math..import"}}, + {pkgpath: "time", name: "Duration", want: "type Duration int64"}, + {pkgpath: "time", name: "Nanosecond", want: "const Nanosecond Duration", wantval: "1"}, + {pkgpath: "unicode", name: "IsUpper", want: "func IsUpper(r rune) bool"}, + {pkgpath: "unicode", name: "MaxRune", want: "const MaxRune untyped rune", wantval: "1114111"}, + {pkgpath: "imports", wantinits: []string{"imports..import", "fmt..import", "math..import"}}, } func TestGoxImporter(t *testing.T) { diff --git a/src/go/internal/gccgoimporter/parser.go b/src/go/internal/gccgoimporter/parser.go index 7312cb4879..3b97c96d43 100644 --- a/src/go/internal/gccgoimporter/parser.go +++ b/src/go/internal/gccgoimporter/parser.go @@ -711,7 +711,10 @@ func (p *parser) parseType(pkg *types.Package) (t types.Type) { func (p *parser) parsePackageInit() PackageInit { name := p.parseUnquotedString() initfunc := p.parseUnquotedString() - priority := int(p.parseInt()) + priority := -1 + if p.version == "v1" { + priority = int(p.parseInt()) + } return PackageInit{Name: name, InitFunc: initfunc, Priority: priority} } @@ -766,6 +769,15 @@ func (p *parser) parseInitDataDirective() { } p.expect(';') + case "init_graph": + p.next() + // The graph data is thrown away for now. + for p.tok != ';' && p.tok != scanner.EOF { + p.parseInt() + p.parseInt() + } + p.expect(';') + case "checksum": // Don't let the scanner try to parse the checksum as a number. defer func(mode uint) { @@ -797,7 +809,7 @@ func (p *parser) parseDirective() { } switch p.lit { - case "v1", "v2", "priority", "init", "checksum": + case "v1", "v2", "priority", "init", "init_graph", "checksum": p.parseInitDataDirective() case "package": diff --git a/src/go/internal/gccgoimporter/testdata/time.gox b/src/go/internal/gccgoimporter/testdata/time.gox new file mode 100644 index 0000000000000000000000000000000000000000..80c2dbcb472813d114032c583c85134a8f340590 GIT binary patch literal 7977 zcmbsuYi}D%)$Iid@{Mmu2pIVTN|7Dy%Z}Y#Ow+`M+}osAwae8lLe<6|$E(=8zWZn! zP{j}65AoCZ$T>4}W@aCbU5FH~J#*&FdB66b<5!cXPoA{s?@4RaGQViG)%y3Z&G#4L z>x_}~A5AmFd zk2ZeV8`(TuuVGICol><_Gcoy6>$FlO%osQ26no;y9}IZhwwTo%CF`7-Az zJ6^D_^M@@5B<;&04f808+iIyBjE#q9kv-S+sMBE1~%hO_> zvwyG?RNo1(LL37RYB9D}eZ9I)2(-t3FK_F!_N!!GlJ9BthByQ(k>Fhvs=DLvNleQF z_Se5Dh#_lBx^SC_cAW!pCd*~UbA6esFN?Cv=}fQpVEyxGq<8aAYRh#EC9Y?aGE2ia z)AaaNdOof=$Xu8l*cY)F#S2cTyLhQ&Ey}W-47BUo>qSlymg_c=^Kic6(>w$xuU#be z#<50fNDw>kjHum!R5wKaKWkrDlL(A%M_^Qv;yVzkHaMi19K)R2=Rze&iFKVM_r;bS zTgDaun&XPWbXZNT9adFn2Q*R=O^0z?9?zOdwh5U;X_gC7X;!-~m{23H^5Bw=yv_K+ zNJuE}kzn%$Ai)CgbnZk_|XX(oG0@UxyD#K^y47 z6l#Pw6PpBpSDbIRAbdK1OP19)&eipt(Wt|AqIOR!uv!bHdt|UL)CG7o#Tm;+?GrEg zGD$(|UvOmnV-c>u=)_g_j;F~EbFitAMik!K(R^SGt_}(jSV7nArol`QRtaQ)MxoN4 zjrTIlK^)+84?Ii>7_7d-Hc1S{g*@&KMCQ#`6ampO2;D{l?X)gHw+J6B^v%TlfHX8a zpG`B=06>|Bb9adB5^mH$B~P}Ieb4zl(xxF@NI`0`iCc=X?r=A^jgr2azDBfoQC-*{ zaffWz-Jz=sP`^CCf)c<22W3S%{Rrh*Ar*c%OB?G5!}d-A$-?9Sz^SNp4gfS2)B(U~ z6NhQ?d;uX?t4GHIs9(rZZM{#6+a{;B;=K(GxTU9{n`oypeo|fnd$JcOD(#>|MuCNJ z#AN|BIN1RN@&;2W`(@3uI_v?>nQ-h<{@dAw5&jOsu(E^5w}F7|xl-bdNJjW=c7U?L&m4l1}w)QGu;7!%{4lG|}SPZl!T6Cqx& zf@eRC64xa-JL0lws^<5-G%4AAGktx7f;N(?X8(hz((;n{Y|5+#LsTAzQa0nCMB!^F z8~!iy(v(Sj7G=Iu!MB&P8T8xGaG~gxEr5$Z?q_e30!rZ>@K7jPo$~~HXbZB#mW0~{ z6`7knZK|rlOetCVR*QK-hkMno)HGj|$b9G}Whhh=1#DXl)>>N`DcmA)sXnE-4cqcG zN=RB(d!|_%7}N8IEQ(=-ungxMdgRX#U&&XxF8Gmd;==S!5fC_)Bh=?*{6|eAgg|UL z?T(A`OQ3_EFZ_O*C(sm;PD{OnIRct^!?D-3lvO^0idDmtZ5mNlfno{9C;`)Z#a#jO z6&a`H<^VRueB@G?*`C6%Apw11b<$z>xIyGplTQL|Xq9{-S%WadH@7hHu^E8Q{p?8e z;%Ze(V#06J0^_s|j?jYNN%V;?WP;h>f|9UBH!O*nq>)Lz5Qjm~JuPTaZ4o`NeY=vWB z(e?t7x;{XqF6#ru6E<9y%yD=|Fo=H&#U^-^1P=UK-)mhLRC8P9a;;5BA9K^8ptya_ z^tG;mq&SQsuA_OX26$u!c+>@LnA6dE9YGBZL%u3Z84PE3HiV^AgAA}3YJ^#!N-bdl ziR6z~ZEP6}!V43<;U8zw{Ju2e)ImAWqniL?sf44b99Z#_qH-`eBq}$@tRcn!K=`GK zSz_*BQ3?UPDM0z2;Wzov;J}98Y%Lxx$E(st!EHq0hZ2oJIJ+jCf35H-f>JgKDTnknL|>Wt-#{iQ5ye$(LdF3S zh8d6U4SKr16*lvj=%t$9OfFm(s$x0!?=Z&`vwxiTo9X}cbOr&fbl~0NC%Vq5 zAJRTtf{440+jYDdyPH9A62K|N1~I`Z8~~JHpbAzadjNJN zMFa5#rPGD<(IvF_W~796E6U z-;{6jx`z+RSEo@7Y2lbE5HrHVMqF6kbj>-`LnaVI++_@JtL~c8y zKvXVe7z~|OK!QS(gg7gB?S8C?FnQyUKxr4#yC6yS&(?e?fY4_ba5%G;hs-5-sA_xm z8$7VnvgLix7jc~~Oz##KqSb}cW`3U)8+PFY>g!GHg- zeSTj&zCZZ&!OMd?`}9>p<}2b;E05WnFDMXJenPTfOJFg}^qc-|G+2~yk)6J}Bf>g& zox#BC(+97|d|>`-woa(kvi@8?*w*1KiG4aHvydLD(YBRlBA;j0zpUFluWlFUg-nLqLv{cq2B$1K?MoL=14N^=p9x@VpeMSZM!*vp*c$y$H zHaCb7jbR=p-_bNPssE&cIV9EkYBjAxH=%PzLP^z1X|=X0Yk@iCSYgr)L&cn1*q*sOGHeQjIX3*OqT!gx}-udHPr&#l*KDW6`YdG^Md@{dVEh4oq} zs+{+x@_f2?@|0yE{iTzK{C@w=%ElKYWHH@pdP9zKZ2Jq6ro{V10)55}Z$?&_Mq?jV z#?*kYRhq91I$JQ$;c+H-h^O#`M|`OxOS|TUAVFj-BM1vYWh&6Mc)7pxgn7Ugh}FUG zBqj^#?B_EsAcw>Ri{}tgcj_X?C;@CG!NxB)kdfmXt22KD0zoJ;Z4mOR$qln`; zcX*N+IlUF38z{7>|r?nn>_oO$;SuUI~*{J&D$vIb)3%?!%viM$w#D_v*>gtNaL9kO^2@+=k zc0!;gz+0qr?J9P28#?y3mdkWp1kshC6epvr{2LKa0ktADYc8UE6<~7TP(4um97jG7 z^O$4j?~@FUf;Q^YnV|Ou5#bUgRi6oPy%_7F4~3TEg$F&?yMU}D*4`Kj4U}f=2a;nd z_OmP~_e)J95eE@03N_a|7bGGzqZKu85Z9~IUo1Gg59zDXXq4_~+Z(iXwyk`vV|CU+ z3^|3FVL6D?!V4LPjO$HE5RyA=Cd?zit!kPtMNC0Nh4MD113A@mtsoa-sad)h?JnI_ z&NB9&=2OmG*Vr2^M|H&^&9X;pca3pRjj!^Jh*&*i-R7U z2#pnn+-Gx0Qey!{*t>j~Qz-8S{3+4+_5^btrTpwfRgN4QLaw0? z!j)jSmN*riaD?AUK)wM;G{_-%huQv(NW7?Led)bGWnd#}?ncDiEKx=7!3Q6ahoU)` z=eD~)!qH2G09~o0U8NPC(gJ4t__)S=3wTkk(P|yRzZ@zg#OPv#G3$uZj52RT)&^D> zNi^kMvlUt8hN1ufOGM*2xk%ZaxvCm|yfq#%BMe4{)wmH%BOXgIWvX1@pc>`S$(j}h z92$Y`wsw$uy20;c2Fb%T>s$SI(HTKQUWgL1=z>L&24i{cOhdvdxa8fsNY>+_*i+xEB+`tu6AVJa0 zG>IIaP!a8%2m`WLLwc7}T%PY;a+-^kxujrgtnP6tug#E7(ul++X9nO4b4r?b9wq^q zQ4_n5i{Tz!5^ytb;Kv+v5Yop@R8A3KD4#IF%(8?K_Ly*H<%EK;bPBS#~FEe zWbktU*w-t;3Z9;O4#0sv!P$R;9dd&8IWc6x9seXCehRP}ixqIVqT5kiCO8pJaKKIk zO=RL+NF&Nd8?FhV3POejPAGh1OxIxJ?@_<_rLnbeG3JD0)po4=}%Sb*h$pu`PK-Y>VU`H!2 z2DD!7r*9KnI0B95)RW@uxI1%YiZ=i(Q18qf>9WPbOzbZ6&IcKuG0< z#v||^u3}5~a#Rj+i5Zt`Q?fFoosx)EW2uw?E?scCpVBb*aZ1$gmC}Wka;#ToxR2Ni*ZEe7*g^y0T_1de{ANft@k#4#0RyFC# zt9`|{uW7BWx36j4L`eZa(x5nkI-GXTj}k$dVBup7YJ-X}(DzHoCgrwRQ3X{gs<~+b z3Tk<74fk!G5kDDL{3H=wQGZ+-(s}(>thC1`iNv5y`^h>yX*3(n!!j3qhKv;ZP