Skip to content

Commit

Permalink
all: REVERSE MERGE dev.typeparams (7cdfa49) into master
Browse files Browse the repository at this point in the history
This commit is a REVERSE MERGE.
It merges dev.typeparams back into its parent branch, master.
This marks the end of development on dev.typeparams.

Merge List:

+ 2021-02-19 7cdfa49 [dev.typeparams] all: merge master (06b86e9) into dev.typeparams
+ 2021-02-19 6521c7b [dev.typeparams] cmd/compile/internal/types2: resolve decl cycle the same way as in go/types
+ 2021-02-19 dfe0ef9 [dev.typeparams] go/types, types2: revert fancy struct printing (fixes x/tools tests)
+ 2021-02-19 2f37939 go/parser: improve error recovery from invalid selector exprs
+ 2021-02-19 8654db4 [dev.typeparams] go/types: adjust printing of embedded struct fields (fixes x/tools/cmd/guru tests)
+ 2021-02-19 47e4b07 Merge "[dev.typeparams] all: merge master (eb98272) into dev.typeparams" into dev.typeparams
+ 2021-02-18 a789be7 [dev.typeparams] cmd/compile: use new converter functions rather than methods (fix build)
+ 2021-02-18 20050a1 [dev.typeparams] cmd/compile:  support generic types (with stenciling of method calls)
+ 2021-02-18 e7493a9 [dev.typeparams] all: merge master (eb98272) into dev.typeparams
+ 2021-02-18 2ff1e05 [dev.typeparams] all: update parent repository
+ 2021-02-18 8960ce7 [dev.typeparams] cmd/compile/internal/types2: minor adjustments to match go/types more closely
+ 2021-02-18 6f3878b [dev.typeparams] cmd/compile/internal/types: review of typestring_test.go
+ 2021-02-18 d6bdd1a [dev.typeparams] cmd/compile/internal/types: review of typestring.go
+ 2021-02-18 c2314ba [dev.typeparams] cmd/compile/internal/types: review of type.go
+ 2021-02-18 099374b [dev.typeparams] cmd/compile/internal/types2: remove Type.Under method in favor of function
+ 2021-02-18 653386a [dev.typeparams] cmd/compile/internal/types2: replace Named, TypeParam methods with functions
+ 2021-02-18 5e4da86 [dev.typeparams] cmd/compile/internal/types2: use converter functions rather than methods
+ 2021-02-18 5ecb9a7 [dev.typeparams] go/types: use a new ast.ListExpr for multi-type instances
+ 2021-02-18 7b67961 [dev.typeparams] go/types: conversions to type parameters are not constant
+ 2021-02-17 f5d0c65 [dev.typeparams] merge master (2f0da6d) into dev.typeparams
+ 2021-02-17 e196cb8 [dev.typeparams] cmd/dist:  disable -G=3 on the std go tests for now
+ 2021-02-12 a06bd9f [dev.typeparams] cmd/compile/internal/types: review of resolver_test.go
+ 2021-02-12 042f88f [dev.typeparams] cmd/compile/internal/types: review of errors_test.go
+ 2021-02-12 0abd7b7 [dev.typeparams] cmd/compile/internal/types: review of universe.go
+ 2021-02-12 1b6f0bf [dev.typeparams] cmd/compile/internal/types: review of sizes_test.go
+ 2021-02-12 1758780 [dev.typeparams] cmd/compile/internal/types: review of sizes.go
+ 2021-02-12 3aee461 [dev.typeparams] cmd/compile/internal/types: review of return.go
+ 2021-02-12 7428318 [dev.typeparams] cmd/compile/internal/types: review of object_test.go
+ 2021-02-12 b20f9e2 [dev.typeparams] cmd/compile/internal/types: review of object.go
+ 2021-02-12 20746b2 [dev.typeparams] cmd/compile/internal/types: review of labels.go
+ 2021-02-12 bab3461 [dev.typeparams] cmd/compile/internal/types: review of infer.go
+ 2021-02-12 9168590 [dev.typeparams] cmd/compile/internal/types: review of builtin_test.go
+ 2021-02-12 f1777cf [dev.typeparams] cmd/compile/internal/types: review of builtin.go
+ 2021-02-12 0f43973 [dev.typeparams] go/types: make predeclared "any" alias for interface{}
+ 2021-02-12 58758e0 [dev.typeparams] go/types: better error message for invalid ... use
+ 2021-02-11 c0aa7bd [dev.typeparams] cmd/compile: small fixes for stenciling
+ 2021-02-10 df23540 [dev.typeparams] cmd/gofmt: add the -G flag to allow generic code
+ 2021-02-10 ddec18c [dev.typeparams] cmd/compile/internal/types2: overlapping embedded interfaces requires go1.14
+ 2021-02-10 fdf3496 [dev.typeparams] cmd/compile:  make type conversions by type parameters work
+ 2021-02-10 12e15d4 [dev.typeparams] cmd/compile: handle calling a method on a type param in stenciling
+ 2021-02-08 ca18c42 [dev.typeparams] merge dev.regabi (618e3c1) into dev.typeparams
+ 2021-02-08 a360eeb [dev.typeparams] cmd/compile/internal/types2: conversions to type parameters are not constant
+ 2021-02-08 0fbde54 [dev.typeparams] cmd/compile: allow generic funcs to call other generic funcs for stenciling
+ 2021-02-05 dcb5e03 [dev.typeparams] cmd/compile: add stenciling of simple generic functions
+ 2021-02-04 f37b0c6 [dev.typeparams] cmd/compile/internal/types2: type alias decl requires go1.9
+ 2021-02-04 7214884 [dev.typeparams] cmd/compile: pass -lang flag value to new type checker
+ 2021-02-04 1ff2fda [dev.typeparams] cmd/compile/internal/types2: add support for language version checking
+ 2021-02-04 370e9f5 [dev.typeparams] cmd/compile/internal/types2: use 512 bits as max. integer precision
+ 2021-02-04 ca2f152 [dev.typeparams] go/types: add missing test from dev.go2go
+ 2021-02-03 dc122c7 [dev.typeparams] test: exclude a failing test again (fix 32bit builds)
+ 2021-02-03 c910fd7 [dev.typeparams] cmd/compile: refuse excessively long constants
+ 2021-02-03 3db6e18 [dev.typeparams] test: enable more errorcheck tests
+ 2021-02-03 bb53a5a [dev.typeparams] cmd/compile/internal/importer: adjust importer to match compiler importer
+ 2021-02-03 3f845b3 [dev.typeparams] cmd/compile: deal with inferred type arguments
+ 2021-02-03 e633f34 [dev.typeparams] cmd/compile:  add OFUNCINST/OTYPEINST nodes for generic func/type instantiation
+ 2021-02-02 0d2d6c7 [dev.typeparams] all: merge dev.regabi (23b0c1f) into dev.typeparams
+ 2021-02-02 3d5c715 [dev.typeparams] Handling multiple type arguments for call via new node OLIST
+ 2021-02-01 13a7412 [dev.typeparams] Parse a generic type arg for generic function call
+ 2021-01-30 0aafd69 [dev.typeparams] cmd/compile: start translating type params in noder2
+ 2021-01-30 a59cb51 [dev.typeparams] cmd/compile/internal/types2: handle untyped constant arithmetic overflow
+ 2021-01-29 507e641 [dev.typeparams] cmd/compile/internal/typecheck: declutter generated builtin.go (cleanup)
+ 2021-01-28 2440dd4 [dev.typeparams] cmd/compile:  start adding info needed for typeparams in types & ir
+ 2021-01-28 c0bf904 [dev.typeparams] cmd/compile/internal/types2: translate syntax to token constants via tables
+ 2021-01-28 f7d1c59 [dev.typeparams] cmd/compile/internal/types2: must not import a package called "init"
+ 2021-01-27 217a461 [dev.typeparams] cmd/compile/internal/types2: report unused packages in source order
+ 2021-01-26 08a598f [dev.typeparams] cmd/compile: fix MethodExpr handling with embedded fields
+ 2021-01-26 cecc1df [dev.typeparams] test: enable excluded test fixedbugs/issue7742.go
+ 2021-01-26 e48d7d3 [dev.typeparams] go/constant: faster match implementation
+ 2021-01-26 d39685e [dev.typeparams] go/constant: choose internal float representations more consistently
+ 2021-01-25 34704e3 [dev.typeparams] all: merge dev.regabi (5e4a0cd) into dev.typeparams
+ 2021-01-26 c97af00 [dev.typeparams] cmd/compile: force untyped constants from types2 to expected kind
+ 2021-01-25 3663a43 [dev.typeparams] go/constant: in ToFloat, convert to rational numbers, not floats
+ 2021-01-25 3432d24 Merge "[dev.typeparams] all: merge dev.regabi (063c72f) into dev.typeparams" into dev.typeparams
+ 2021-01-25 493eb6e [dev.typeparams] cmd/compile: fix -G=3 handling of blank methods
+ 2021-01-25 13f0201 [dev.typeparams] test: enable more errorcheck tests w/ -G=3
+ 2021-01-24 6d8d118 [dev.typeparams] all: merge dev.regabi (063c72f) into dev.typeparams
+ 2021-01-24 9456804 [dev.typeparams] test: fix excluded files lookup so it works on Windows
+ 2021-01-23 7947df4 [dev.typeparams] test: set -G=3 and enable more errorcheck tests in run.go
+ 2021-01-23 a49e941 [dev.typeparams] cmd/compile/internal/types2: remove MethodSet code - not used by types2
+ 2021-01-23 5347241 [dev.typeparams] cmd/compile/internal/types2: use same sort criteria for methods as compiler
+ 2021-01-23 2b95c28 [dev.typeparams] cmd/compile: refactor SelectorExpr code into helpers
+ 2021-01-23 1946a77 Merge "[dev.typeparams] all: merge dev.regabi (7e0a81d) into dev.typeparams" into dev.typeparams
+ 2021-01-23 6923019 [dev.typeparams] cmd/compile/internal/types2: factor out sorting of methods
+ 2021-01-22 6e46c8f [dev.typeparams] all: merge dev.regabi (7e0a81d) into dev.typeparams
+ 2021-01-22 e4ef30a [dev.typeparams] cmd/compile: refactor irgen's handling of ":="
+ 2021-01-22 626406b [dev.typeparams] go/types: import api_test.go changes from dev.go2go
+ 2021-01-22 12cd9cf [dev.typeparams] cmd/compile: disambiguate OXDOT in noder using types2 Selection info
+ 2021-01-22 f865457 [dev.typeparams] cmd/compile/internal/types2: adjust errors in branch checking code, fix a bug
+ 2021-01-21 18bd7aa [dev.typeparams] cmd/compile: use nil instead of syntax.ImplicitOne
+ 2021-01-21 2427f6e [dev.typeparams] cmd/compile: directly set some simple expression types
+ 2021-01-21 455c29a [dev.typeparams] cmd/compile/internal/types2: convert untyped arguments to delete
+ 2021-01-21 f03f934 [dev.typeparams] cmd/compile/internal/types2: make predeclared "any" alias for interface{}
+ 2021-01-20 0f054c5 [dev.typeparams] cmd/dist: add -G=3 test coverage
+ 2021-01-20 89ec17b [dev.typeparams] cmd/compile: simplify how irgen handles qualified idents
+ 2021-01-20 fa01ade [dev.typeparams] go/types: add tests from dev.go2go
+ 2021-01-20 734cb8b [dev.typeparams] go/types: refactor untyped conversion for typeparams
+ 2021-01-20 d8796b5 [dev.typeparams] cmd/compile/internal/types2: report type of nil based on context
+ 2021-01-19 48a3cb3 [dev.typeparams] go/types: fix some merge errors in call.go
+ 2021-01-19 3e15bf7 [dev.typeparams] go/types: don't modify Named.underlying in validType
+ 2021-01-19 f38f862 [dev.typeparams] go/types: strip annotations from errors
+ 2021-01-19 2e64511 [dev.typeparams] go/types: unify methods in missingMethod
+ 2021-01-19 958927c [dev.typeparams] go/parser: error for type instances without ParseTypeParams
+ 2021-01-19 90bfc73 [dev.typeparams] cmd/compile: cache mapped types during irgen
+ 2021-01-19 3c0a39c [dev.typeparams] cmd/compile/internal/types: minor fixes/cleanups around testing
+ 2021-01-15 502198c [dev.typeparams] cmd/compile/internal/types2: consistently report nil type as "untyped nil"
+ 2021-01-14 82c3f0a [dev.typeparams] cmd/compile/internal/types2: untyped shift counts must fit into uint
+ 2021-01-14 67bf62d [dev.typeparams] cmd/compile/internal/types2: better error message for invalid ... use
+ 2021-01-14 ef5285f [dev.typeparams] cmd/compile: add types2-based noder
+ 2021-01-12 f065ff2 [dev.typeparams] all: merge dev.regabi (d9acf6f) into dev.typeparams
+ 2021-01-12 0995996 [dev.typeparams] cmd/compile: refactor import logic
+ 2021-01-12 106aa94 [dev.typeparams] cmd/compile: refactor DWARF scope marking
+ 2021-01-12 6a56c6c [dev.typeparams] go/types: import dev.go2go changes to check tests
+ 2021-01-11 9e746e4 [dev.typeparams] cmd/compile: refactor varEmbed logic
+ 2021-01-11 3e1a87a [dev.typeparams] cmd/compile: extract posMap from noder
+ 2021-01-11 2e8f29b [dev.typeparams] cmd/compile: add types2.Sizes implementation
+ 2021-01-11 44d1a85 [dev.typeparams] cmd/compile/internal/types2: fixes for all.bash
+ 2021-01-11 8123bc9 [dev.typeparams] cmd/go: relax test expectation
+ 2021-01-11 8c5aa42 [dev.typeparams] cmd/compile: calculate variable sizes in walk
+ 2021-01-11 1ce0854 [dev.typeparams] import stmt changes from dev.go2go
+ 2021-01-11 eb53a6c [dev.typeparams] import operand.go changes from dev.go2go
+ 2021-01-11 81cd998 [dev.typeparams] go/types: import expr changes from dev.go2go
+ 2021-01-08 822aeac [dev.typeparams] cmd/compile/internal/syntax: remove ShortString, use String instead
+ 2021-01-08 d017a1b [dev.typeparams] cmd/compile/internal/syntax: add Walk node vistor from types2
+ 2021-01-08 7903214 [dev.typeparams] cmd/compile/internal/syntax: add ShortString tests
+ 2021-01-08 0aede12 [dev.typeparams] cmd/compile/internal/types2: use syntax printer to print expressions
+ 2021-01-08 934f9dc [dev.typeparams] cmd/compile/internal/syntax: clean up node printing API
+ 2021-01-07 5b9152d [dev.typeparams] all: merge dev.regabi (cb05a0a) into dev.typeparams
+ 2021-01-07 7e689f8 [dev.typeparams] go/types: move use and useLHS to match dev.go2go
+ 2021-01-06 d76cefe [dev.typeparams] go/types: remove disabled code related to type lists
+ 2021-01-06 0e28657 [dev.typeparams] go/types: import typexpr.go from dev.go2go
+ 2021-01-06 9546596 [dev.typeparams] cmd/compile/internal/types2: remove disabled code related to type lists
+ 2021-01-06 196102d [dev.typeparams] cmd/compile/internal/types2: review of typexpr.go
+ 2021-01-05 a8fe098 [dev.typeparams] all: merge dev.regabi (77365c5) into dev.typeparams
+ 2020-12-28 a800aca [dev.typeparams] all: merge dev.regabi (07569da) into dev.typeparams
+ 2020-12-27 dd40bbc [dev.typeparams] cmd/compile: re-enable internal/types2 test
+ 2020-12-23 d99dd17 [dev.typeparams] all: merge dev.regabi (37f138d) into dev.typeparams
+ 2020-12-22 8b1fbd8 [dev.typeparams] all: merge dev.regabi (6d03cde) into dev.typeparams
+ 2020-12-22 23922cf [dev.typeparams] all: merge dev.regabi (d1d1099) into dev.typeparams
+ 2020-12-23 788dad5 [dev.typeparams] cmd/compile/internal/types2: disable external test temporarily
+ 2020-12-22 91cc51e [dev.typeparams] all: merge dev.regabi (ec741b0) into dev.typeparams
+ 2020-12-22 e02a007 [dev.typeparams] codereview.cfg: add config for dev.typeparams
+ 2020-12-22 41e7901 [dev.typeparams] cmd/compile/internal/types2: report error for invalid main function signature
+ 2020-12-22 53c4c17 [dev.typeparams] all: merge dev.regabi into dev.typeparams
+ 2020-12-17 060cdbc [dev.typeparams] go/types: import object resolution from dev.go2go
+ 2020-12-17 c4f0da5 [dev.typeparams] cmd/compile/internal/types2: remove code for implicit type arguments
+ 2020-12-16 068dd04 [dev.typeparams] cmd/compile/internal/syntax: don't panic when providing -verify
+ 2020-12-16 7909d6e [dev.typeparams] cmd/compile/internal/syntax: type parameters must always be named
+ 2020-12-16 3b5918c [dev.typeparams] cmd/compile/internal/types2: review of predicates.go
+ 2020-12-16 09abd23 [dev.typeparams] go/types: import predicates.go from dev.go2go
+ 2020-12-16 f38da2c [dev.typeparams] cmd/compile/internal/types2: review of unify.go
+ 2020-12-16 ceb77db [dev.typeparams] go/types: import some support functions from dev.go2go
+ 2020-12-15 a4d4c10 [dev.typeparams] go/types: import lookup logic from dev.go2go
+ 2020-12-15 1306435 [dev.typeparams] go/types: import changes to types.Info from dev.go2go
+ 2020-12-15 6b18081 [dev.typeparams] cmd/compile/internal/types2: don't crash if import path is missing
+ 2020-12-15 14e4267 [dev.typeparams] cmd/compile/internal/types2: report error for invalid (but empty) expr switch
+ 2020-12-15 9699929 [dev.typeparams] go/types: import unify.go and infer.go from dev.go2go
+ 2020-12-15 5aff757 [dev.typeparams] cmd/compile/internal/gc: provide types2 selection info to noder
+ 2020-12-14 c8e7348 go/types: import instance.expand and subst.go from dev.go2go
+ 2020-12-14 3a912f2 [dev.typeparams] cmd/compile/internal/syntax: export NewName and use it
+ 2020-12-14 8ec9e89 [dev.typeparams] cmd/compile/internal/types2: fix stray ')' in error
+ 2020-12-14 8fe8e29 [dev.typeparams] cmd/compile/internal/types2: report error for invalid type expression
+ 2020-12-14 f8930a2 [dev.typeparams] cmd/compile/internal/types2: report invalid ... in conversions
+ 2020-12-14 5aca6e7 [dev.typeparams] test: finish triaging all outstanding failing tests
+ 2020-12-14 df58f33 [dev.typeparams] cmd/compile/internal/types2: don't report two errors for bad strings
+ 2020-12-14 91803a2 [dev.typeparams] merge: merge branch 'dev.regabi' into 'dev.typeparams'
+ 2020-12-11 a200212 [dev.typeparams] cmd/compile/internal/types2: bring over subst.go changes from go/types
+ 2020-12-10 ddf4490 [dev.typeparams] test: exclude 32bit-specific test that fails on 32bit platforms (fix build)
+ 2020-12-10 dbce27d [dev.typeparams] cmd/compile/internal/types2: report correct line number for missing key
+ 2020-12-09 edf80c4 [dev.typeparams] cmd/compile/internal/types2: adjusted more error messages for compiler
+ 2020-12-09 43c7b21 [dev.typeparams] cmd/compile/internal/types2: adjusted qualified identifier error message for compiler
+ 2020-12-09 6812eae [dev.typeparams] cmd/compile/internal/types2: adjust init cycle error message for compiler
+ 2020-12-09 810957b [dev.typeparams] cmd/compile/internal/types2: adjusted array error message for compiler
+ 2020-12-09 c32566c [dev.typeparams] cmd/compile/internal/types2: avoid endless recursion in Comparable predicate
+ 2020-12-08 6015c4e [dev.typeparams] go/*: add TODOs from CLs importing dev.go2go changes
+ 2020-12-08 b6e6785 [dev.typeparams] go/types: import universe changes from dev.go2go
+ 2020-12-08 14dc2d2 [dev.typeparams] go/types: import the Type API from dev.go2go
+ 2020-12-07 cd15a48 [dev.typeparams] cmd/compile/internal/types2: correct error position for inherited const init expression
+ 2020-12-04 02820d6 [dev.typeparams] test: enable some more errorcheck tests
+ 2020-12-03 9ff27e9 [dev.typeparams] test: run all errorcheck tests that pass compiler with -G flag
+ 2020-12-03 7a1aa7d [dev.typeparams] test: adjust more test cases to match compiler -G output
+ 2020-12-03 07d32c8 [dev.typeparams] cmd/compile/internal/types: adjust some error messages to match the compiler
+ 2020-12-03 6b4da14 [dev.typeparams] cmd/compile: provide scaffolding to get types2 types during noding
+ 2020-12-02 72cc235 [dev.typeparams] go/printer: adapt changes from dev.go2go
+ 2020-12-02 ab18125 [dev.typeparams] cmd/compile/internal/types2: no "declared but not used" errors for invalid var decls
+ 2020-12-02 0362458 [dev.typeparams] cmd/compile/internal/types2: set compiler error message for undeclared variable
+ 2020-12-01 bdc4ffe [dev.typeparams] cmd/compile/internal/types2: add Config.IgnoreBranches flag
+ 2020-12-01 72ad2f4 [dev.typeparams] test: add scaffolding to run.go to check compiler with -G flag
+ 2020-12-01 87bc85a [dev.typeparams] cmd/compile/internal/types2: adjustments toward matching compiler error messages
+ 2020-12-01 fbc4c6a [dev.typeparams] cmd/compile/internal/types2: remove support for type parameter pointer designation
+ 2020-11-25 ba9c35a [dev.typeparams] merge dev.regabi 40f5bc4 into dev.typeparams
+ 2020-11-25 5c2e148 [dev.typeparams] merge dev.regabi 41f3af9 into dev.typeparams
+ 2020-11-25 2c25cd5 [dev.typeparams] cmd/compile/internal/types2: a type parameter is a valid type case in a type switch
+ 2020-11-24 0fb733b [dev.typeparams] go/parser: support the ParseTypeParams mode
+ 2020-11-24 b567621 [dev.typeparams] import go2go changes to parse type parameters
+ 2020-11-24 a324aeb [dev.typeparams] go/types, cmd/compile/internal/types2: fix incorrect string(int) conversion (regression)
+ 2020-11-20 8fbdacf [dev.typeparams] cmd/compile/internal/types2: report constant overflow in binary ops
+ 2020-11-19 b1ae0a0 [dev.typeparams] Merge branch 'master' into dev.typeparams
+ 2020-11-19 0123c9b [dev.typeparams] cmd/compile/internal/types2: report an error for invalid constant values
+ 2020-11-18 2140049 [dev.typeparams] cmd/compile/internal/types2: port of https://golang.org/cl/270957
+ 2020-11-11 6877ee1 [dev.typeparams] cmd/compile: use existing findpkg algorithm when importing through types2
+ 2020-11-03 165ceb0 [dev.typeparams] merge master into dev.typeparams
+ 2020-10-28 41ff51a [dev.typeparams] cmd/compile/internal/types2: review of scopes.go
+ 2020-10-27 9392b82 [dev.typeparams] cmd/compile/internal/types: review of objset.go
+ 2020-10-27 c32ac6c [dev.typeparams] cmd/compile/internal/types: review of selection.go
+ 2020-10-27 ff6ab11 [dev.typeparams] cmd/compile/internal/types: review of gccgosizes.go
+ 2020-10-27 abb31c2 [dev.typeparams] cmd/compile/internal/types2: review of hilbert_test.go
+ 2020-10-27 6e98406 [dev.typeparams] cmd/compile/internal/types2: review of initorder.go
+ 2020-10-27 38af45b [dev.typeparams] cmd/compile/internal/types2: review of package.go
+ 2020-10-27 87eab74 [dev.typeparams] cmd/compile: enable type-checking of generic code
+ 2020-10-23 5bfd296 [dev.typeparams] merge master into dev.typeparams
+ 2020-10-22 a10fe9f go/ast: import AST changes supporting typeparams from dev.go2go
+ 2020-10-21 7a8a720 [dev.typeparams] cmd/compile/internal/types2: add *.go2 (generic) tests
+ 2020-10-21 755d6de [dev.typeparams] cmd/compile/internal/types2: add some more tests
+ 2020-10-21 1d07306 [dev.typeparams] cmd/compile/internal/types2: adjust tests, enable Testdata tests
+ 2020-10-21 befc62a [dev.typeparams] cmd/compile/internal/types2: add testdata directory
+ 2020-10-21 ca36ba8 [dev.typeparams] cmd/compile/internal/importer, types2: initial check-in of types2 and importer
+ 2020-10-20 6ff16fe [dev.typeparams] cmd/compile/internal/syntax: add utility functions for testing
+ 2020-10-19 5e46c6a [dev.typeparams] cmd/compile/internal/syntax: add Pos method
+ 2020-10-15 e9e58a4 [dev.typeparams] cmd/compile/internal/syntax: fix printing of channel types
+ 2020-10-14 73f5298 [dev.typeparams] cmd/compile/internal/syntax: always use IndexExpr node for type instantiation
+ 2020-10-13 48755e0 [dev.typeparams] cmd/compile: enable parsing of generic code with new -G flag
+ 2020-10-13 7668f02 [dev.typeparams] cmd/compile/internal/syntax: add type parameter tests
+ 2020-10-13 b627988 [dev.typeparams] cmd/compile/internal/syntax: implement parsing of type parameters
+ 2020-10-13 617b633 [dev.typeparams] cmd/compile/internal/syntax: prepare syntax nodes for type parameters
+ 2020-10-12 986cad1 [dev.typeparams] merge master into dev.typeparams

Change-Id: Ie0796a53af1fb5db49f4c748144461d3af598575
  • Loading branch information
griesemer committed Feb 19, 2021
2 parents 06b86e9 + 7cdfa49 commit 9a99515
Show file tree
Hide file tree
Showing 501 changed files with 51,200 additions and 2,488 deletions.
1 change: 1 addition & 0 deletions src/cmd/compile/internal/base/flag.go
Expand Up @@ -54,6 +54,7 @@ type CmdFlags struct {
C CountFlag "help:\"disable printing of columns in error messages\""
D string "help:\"set relative `path` for local imports\""
E CountFlag "help:\"debug symbol export\""
G CountFlag "help:\"accept generic code\""
I func(string) "help:\"add `directory` to import search path\""
K CountFlag "help:\"debug missing line numbers\""
L CountFlag "help:\"show full file names in error messages\""
Expand Down
5 changes: 5 additions & 0 deletions src/cmd/compile/internal/gc/export.go
Expand Up @@ -25,6 +25,11 @@ func exportf(bout *bio.Writer, format string, args ...interface{}) {
func dumpexport(bout *bio.Writer) {
p := &exporter{marked: make(map[*types.Type]bool)}
for _, n := range typecheck.Target.Exports {
// Must catch it here rather than Export(), because the type can be
// not fully set (still TFORW) when Export() is called.
if n.Type() != nil && n.Type().HasTParam() {
base.Fatalf("Cannot (yet) export a generic type: %v", n)
}
p.markObject(n)
}

Expand Down
92 changes: 92 additions & 0 deletions src/cmd/compile/internal/importer/exportdata.go
@@ -0,0 +1,92 @@
// UNREVIEWED
// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// This file implements FindExportData.

package importer

import (
"bufio"
"fmt"
"io"
"strconv"
"strings"
)

func readGopackHeader(r *bufio.Reader) (name string, size int, err error) {
// See $GOROOT/include/ar.h.
hdr := make([]byte, 16+12+6+6+8+10+2)
_, err = io.ReadFull(r, hdr)
if err != nil {
return
}
// leave for debugging
if false {
fmt.Printf("header: %s", hdr)
}
s := strings.TrimSpace(string(hdr[16+12+6+6+8:][:10]))
size, err = strconv.Atoi(s)
if err != nil || hdr[len(hdr)-2] != '`' || hdr[len(hdr)-1] != '\n' {
err = fmt.Errorf("invalid archive header")
return
}
name = strings.TrimSpace(string(hdr[:16]))
return
}

// FindExportData positions the reader r at the beginning of the
// export data section of an underlying GC-created object/archive
// file by reading from it. The reader must be positioned at the
// start of the file before calling this function. The hdr result
// is the string before the export data, either "$$" or "$$B".
//
func FindExportData(r *bufio.Reader) (hdr string, err error) {
// Read first line to make sure this is an object file.
line, err := r.ReadSlice('\n')
if err != nil {
err = fmt.Errorf("can't find export data (%v)", err)
return
}

if string(line) == "!<arch>\n" {
// Archive file. Scan to __.PKGDEF.
var name string
if name, _, err = readGopackHeader(r); err != nil {
return
}

// First entry should be __.PKGDEF.
if name != "__.PKGDEF" {
err = fmt.Errorf("go archive is missing __.PKGDEF")
return
}

// Read first line of __.PKGDEF data, so that line
// is once again the first line of the input.
if line, err = r.ReadSlice('\n'); err != nil {
err = fmt.Errorf("can't find export data (%v)", err)
return
}
}

// Now at __.PKGDEF in archive or still at beginning of file.
// Either way, line should begin with "go object ".
if !strings.HasPrefix(string(line), "go object ") {
err = fmt.Errorf("not a Go object file")
return
}

// Skip over object header to export data.
// Begins after first line starting with $$.
for line[0] != '$' {
if line, err = r.ReadSlice('\n'); err != nil {
err = fmt.Errorf("can't find export data (%v)", err)
return
}
}
hdr = string(line)

return
}
175 changes: 175 additions & 0 deletions src/cmd/compile/internal/importer/gcimporter.go
@@ -0,0 +1,175 @@
// UNREVIEWED
// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// package importer implements Import for gc-generated object files.
package importer

import (
"bufio"
"cmd/compile/internal/types2"
"fmt"
"go/build"
"io"
"io/ioutil"
"os"
"path/filepath"
"strings"
)

// debugging/development support
const debug = false

var pkgExts = [...]string{".a", ".o"}

// FindPkg returns the filename and unique package id for an import
// path based on package information provided by build.Import (using
// the build.Default build.Context). A relative srcDir is interpreted
// relative to the current working directory.
// If no file was found, an empty filename is returned.
//
func FindPkg(path, srcDir string) (filename, id string) {
if path == "" {
return
}

var noext string
switch {
default:
// "x" -> "$GOPATH/pkg/$GOOS_$GOARCH/x.ext", "x"
// Don't require the source files to be present.
if abs, err := filepath.Abs(srcDir); err == nil { // see issue 14282
srcDir = abs
}
bp, _ := build.Import(path, srcDir, build.FindOnly|build.AllowBinary)
if bp.PkgObj == "" {
id = path // make sure we have an id to print in error message
return
}
noext = strings.TrimSuffix(bp.PkgObj, ".a")
id = bp.ImportPath

case build.IsLocalImport(path):
// "./x" -> "/this/directory/x.ext", "/this/directory/x"
noext = filepath.Join(srcDir, path)
id = noext

case filepath.IsAbs(path):
// for completeness only - go/build.Import
// does not support absolute imports
// "/x" -> "/x.ext", "/x"
noext = path
id = path
}

if false { // for debugging
if path != id {
fmt.Printf("%s -> %s\n", path, id)
}
}

// try extensions
for _, ext := range pkgExts {
filename = noext + ext
if f, err := os.Stat(filename); err == nil && !f.IsDir() {
return
}
}

filename = "" // not found
return
}

// Import imports a gc-generated package given its import path and srcDir, adds
// the corresponding package object to the packages map, and returns the object.
// The packages map must contain all packages already imported.
//
func Import(packages map[string]*types2.Package, path, srcDir string, lookup func(path string) (io.ReadCloser, error)) (pkg *types2.Package, err error) {
var rc io.ReadCloser
var id string
if lookup != nil {
// With custom lookup specified, assume that caller has
// converted path to a canonical import path for use in the map.
if path == "unsafe" {
return types2.Unsafe, nil
}
id = path

// No need to re-import if the package was imported completely before.
if pkg = packages[id]; pkg != nil && pkg.Complete() {
return
}
f, err := lookup(path)
if err != nil {
return nil, err
}
rc = f
} else {
var filename string
filename, id = FindPkg(path, srcDir)
if filename == "" {
if path == "unsafe" {
return types2.Unsafe, nil
}
return nil, fmt.Errorf("can't find import: %q", id)
}

// no need to re-import if the package was imported completely before
if pkg = packages[id]; pkg != nil && pkg.Complete() {
return
}

// open file
f, err := os.Open(filename)
if err != nil {
return nil, err
}
defer func() {
if err != nil {
// add file name to error
err = fmt.Errorf("%s: %v", filename, err)
}
}()
rc = f
}
defer rc.Close()

var hdr string
buf := bufio.NewReader(rc)
if hdr, err = FindExportData(buf); err != nil {
return
}

switch hdr {
case "$$\n":
err = fmt.Errorf("import %q: old textual export format no longer supported (recompile library)", path)

case "$$B\n":
var data []byte
data, err = ioutil.ReadAll(buf)
if err != nil {
break
}

// The indexed export format starts with an 'i'; the older
// binary export format starts with a 'c', 'd', or 'v'
// (from "version"). Select appropriate importer.
if len(data) > 0 && data[0] == 'i' {
_, pkg, err = iImportData(packages, data[1:], id)
} else {
err = fmt.Errorf("import %q: old binary export format no longer supported (recompile library)", path)
}

default:
err = fmt.Errorf("import %q: unknown export data header: %q", path, hdr)
}

return
}

type byPath []*types2.Package

func (a byPath) Len() int { return len(a) }
func (a byPath) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a byPath) Less(i, j int) bool { return a[i].Path() < a[j].Path() }

0 comments on commit 9a99515

Please sign in to comment.