• Robert Griesemer's avatar
    cmd/compile: check labels and branches during parse time · 912a638b
    Robert Griesemer authored
    Instead of a separate check control flow pass (checkcfg.go)
    operating on nodes, perform this check at parse time on the
    new syntax tree. Permits this check to be done concurrently,
    and doesn't depend on the specifics of the symbol's dclstack
    implementation anymore. The remaining dclstack uses will be
    removed in a follow-up change.
    
    - added CheckBranches Mode flag (so we can turn off the check
      if we only care about syntactic correctness, e.g. for tests)
    
    - adjusted test/goto.go error messages: the new branches
      checker only reports if a goto jumps into a block, but not
      which block (we may want to improve this again, eventually)
    
    - also, the new branches checker reports one variable that
      is being jumped over by a goto, but it may not be the first
      one declared (this is fine either way)
    
    - the new branches checker reports additional errors for
      fixedbugs/issue14006.go (not crucial to avoid those errors)
    
    - the new branches checker now correctly reports only
      variable declarations being jumped over, rather than
      all declarations (issue 8042). Added respective tests.
    
    Fixes #8042.
    
    Change-Id: I53b6e1bda189748e1e1fb5b765a8a64337c27d40
    Reviewed-on: https://go-review.googlesource.com/39998Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
    912a638b
goto.go 9.18 KB