• griesemer's avatar
    spec: clarify context type for certain non-constant shifts · 9690d245
    griesemer authored
    The spec is not conclusive about whether a non-constant shift of
    certain untyped constant left operands is valid when the shift
    expression appears as an index in an index or slice expression,
    or as a size in a `make` function call.
    
    Despite identical spec rules in all these cases, cmd/compile accepts
    
    	make([]byte, 1.0 << s)
    
    but pronounces an error for
    
    	a[1.0 << s]
    
    (go/types accepts both).
    
    This change clarifies the spec by explicitly stating that an
    untyped constant left operand in a non-constant shift (1.0 in
    the above examples) will be given type `int` in these contexts.
    
    A separate issue #21693 addresses the cmd/compile bug.
    
    Fixes #14844.
    
    Change-Id: I4b52125e487a607fae377fcbed55463cdce9836c
    Reviewed-on: https://go-review.googlesource.com/60230Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
    Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
    9690d245
Name
Last commit
Last update
.github Loading commit data...
api Loading commit data...
doc Loading commit data...
lib/time Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README.md Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...