]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/yacc: fix default action
authorMatthew Dempsky <mdempsky@google.com>
Wed, 18 Mar 2015 20:29:22 +0000 (13:29 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Sat, 4 Apr 2015 00:10:16 +0000 (00:10 +0000)
Previously, a production rule like

A: B C D

would cause yacc to check that A and B have the same declared types,
but then it would generate an implicit action of { $$ = $3 } (i.e.,
copy the value from D), even if A and D have different types.

Fixes #10192.

Change-Id: I51cfd7baa0011557141dca33b7af1d892cc6f49e
Reviewed-on: https://go-review.googlesource.com/7780
Reviewed-by: Russ Cox <rsc@golang.org>
src/cmd/yacc/yacc.go

index d0a9279c877c595718bc9d3511b0adddc158cc42..f52ef2f4d7949b8f23971a67267108c19899a2a6 100644 (file)
@@ -637,9 +637,6 @@ outer:
                        if tempty != nontrst[curprod[0]-NTBASE].value {
                                lerrorf(ruleline, "default action causes potential type clash")
                        }
-                       fmt.Fprintf(fcode, "\n\tcase %v:", nprod)
-                       fmt.Fprintf(fcode, "\n\t\t%sVAL.%v = %sS[%spt-0].%v",
-                               prefix, typeset[tempty], prefix, prefix, typeset[tempty])
                }
                moreprod()
                prdptr[nprod] = make([]int, mem)