diff options
author | Robert Griesemer <gri@golang.org> | 2021-08-24 18:07:42 -0700 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2021-08-25 23:43:53 +0000 |
commit | 4068fb6c2162b38db7912903ff12bafe9f5ca9bb (patch) | |
tree | 9bd25a1f5bd6d796bb080499c5cb27a49276f616 /src/cmd/compile/internal/types2/subst.go | |
parent | bf0bc4122fd4b3a75c2f9c107895cd5e2f89b90e (diff) | |
download | go-4068fb6c2162b38db7912903ff12bafe9f5ca9bb.tar.gz go-4068fb6c2162b38db7912903ff12bafe9f5ca9bb.zip |
cmd/compile: always accept 1.18 syntax but complain if not 1.18
This CL configures the parser to always accept 1.18 syntax
(type parameters, type instantiations, interface elements),
even when -lang is set to an earlier release.
Instead, the type checker looks for 1.18 operations and
complains if the language version is set to an earlier
release.
Doing these checks during type checking is necessary because it
it is possible to write "generic" code using pre-1.18 syntax;
for instance, an imported generic function may be implicitly
instantiated (as in imported.Max(2, 3)), or an imported constraint
interface may be embedded in an "ordinary" interface.
Fixes #47818.
Change-Id: I83ec302b3f4ba7196c0a4743c03670cfb901310d
Reviewed-on: https://go-review.googlesource.com/c/go/+/344871
Trust: Robert Griesemer <gri@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Diffstat (limited to 'src/cmd/compile/internal/types2/subst.go')
-rw-r--r-- | src/cmd/compile/internal/types2/subst.go | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/cmd/compile/internal/types2/subst.go b/src/cmd/compile/internal/types2/subst.go index 918e5f3043..ff8dd13b6d 100644 --- a/src/cmd/compile/internal/types2/subst.go +++ b/src/cmd/compile/internal/types2/subst.go @@ -38,7 +38,7 @@ func (m substMap) lookup(tpar *TypeParam) Type { // subst returns the type typ with its type parameters tpars replaced by the // corresponding type arguments targs, recursively. subst doesn't modify the // incoming type. If a substitution took place, the result type is different -// from from the incoming type. +// from the incoming type. // // If the given typMap is non-nil, it is used in lieu of check.typMap. func (check *Checker) subst(pos syntax.Pos, typ Type, smap substMap, typMap map[string]*Named) Type { |