mirror of
				https://github.com/go-delve/delve.git
				synced 2025-10-30 10:17:03 +08:00 
			
		
		
		
	vendor: update version of go/packages to 0.1.11 (#3053)
The current version we use now crashes with go1.19: https://github.com/golang/go/issues/45584
This commit is contained in:
		 Alessandro Arzilli
					Alessandro Arzilli
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							ff3370e676
						
					
				
				
					commit
					0764cc3aa0
				
			
							
								
								
									
										3
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								go.mod
									
									
									
									
									
								
							| @ -19,6 +19,7 @@ require ( | |||||||
| 	go.starlark.net v0.0.0-20200821142938-949cc6f4b097 | 	go.starlark.net v0.0.0-20200821142938-949cc6f4b097 | ||||||
| 	golang.org/x/arch v0.0.0-20190927153633-4e8777c89be4 | 	golang.org/x/arch v0.0.0-20190927153633-4e8777c89be4 | ||||||
| 	golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1 | 	golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1 | ||||||
| 	golang.org/x/tools v0.1.9 | 	golang.org/x/tools v0.1.11 | ||||||
|  | 	golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect | ||||||
| 	gopkg.in/yaml.v2 v2.4.0 | 	gopkg.in/yaml.v2 v2.4.0 | ||||||
| ) | ) | ||||||
|  | |||||||
							
								
								
									
										14
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								go.sum
									
									
									
									
									
								
							| @ -219,7 +219,7 @@ golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnf | |||||||
| golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= | ||||||
| golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | ||||||
| golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | ||||||
| golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= | ||||||
| golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | ||||||
| golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | ||||||
| golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= | golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= | ||||||
| @ -238,8 +238,8 @@ golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU | |||||||
| golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= | golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= | ||||||
| golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= | golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= | ||||||
| golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= | golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= | ||||||
| golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38= | golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= | ||||||
| golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= | golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= | ||||||
| golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||||
| golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||||
| golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||||
| @ -254,6 +254,7 @@ golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn | |||||||
| golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | ||||||
| golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= | golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= | ||||||
| golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||||
|  | golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | ||||||
| golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= | golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= | ||||||
| golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | ||||||
| golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= | golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= | ||||||
| @ -281,6 +282,7 @@ golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7w | |||||||
| golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
|  | golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
| golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
| golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
| golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1 h1:kwrAHlwJ0DUBZwQ238v+Uod/3eZ8B2K5rYsUHBQvzmI= | golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1 h1:kwrAHlwJ0DUBZwQ238v+Uod/3eZ8B2K5rYsUHBQvzmI= | ||||||
| @ -289,6 +291,7 @@ golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9sn | |||||||
| golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||||||
| golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||||||
| golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= | golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= | ||||||
|  | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||||
| golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||||
| golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= | golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= | ||||||
| golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | ||||||
| @ -311,10 +314,9 @@ golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtn | |||||||
| golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||||
| golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||||
| golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||||
| golang.org/x/tools v0.1.9 h1:j9KsMiaP1c3B0OTQGth0/k+miLGTgLsAFUCrF2vLcF8= | golang.org/x/tools v0.1.11 h1:loJ25fNOEhSXfHrpoGj91eCUThwdNX6u24rO1xnNteY= | ||||||
| golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= | golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= | ||||||
| golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||||
| golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= |  | ||||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= | golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= | ||||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||||
|  | |||||||
							
								
								
									
										10
									
								
								vendor/golang.org/x/mod/semver/semver.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/golang.org/x/mod/semver/semver.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -32,7 +32,6 @@ type parsed struct { | |||||||
| 	short      string | 	short      string | ||||||
| 	prerelease string | 	prerelease string | ||||||
| 	build      string | 	build      string | ||||||
| 	err        string |  | ||||||
| } | } | ||||||
|  |  | ||||||
| // IsValid reports whether v is a valid semantic version string. | // IsValid reports whether v is a valid semantic version string. | ||||||
| @ -172,12 +171,10 @@ func Sort(list []string) { | |||||||
|  |  | ||||||
| func parse(v string) (p parsed, ok bool) { | func parse(v string) (p parsed, ok bool) { | ||||||
| 	if v == "" || v[0] != 'v' { | 	if v == "" || v[0] != 'v' { | ||||||
| 		p.err = "missing v prefix" |  | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	p.major, v, ok = parseInt(v[1:]) | 	p.major, v, ok = parseInt(v[1:]) | ||||||
| 	if !ok { | 	if !ok { | ||||||
| 		p.err = "bad major version" |  | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	if v == "" { | 	if v == "" { | ||||||
| @ -187,13 +184,11 @@ func parse(v string) (p parsed, ok bool) { | |||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	if v[0] != '.' { | 	if v[0] != '.' { | ||||||
| 		p.err = "bad minor prefix" |  | ||||||
| 		ok = false | 		ok = false | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	p.minor, v, ok = parseInt(v[1:]) | 	p.minor, v, ok = parseInt(v[1:]) | ||||||
| 	if !ok { | 	if !ok { | ||||||
| 		p.err = "bad minor version" |  | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	if v == "" { | 	if v == "" { | ||||||
| @ -202,31 +197,26 @@ func parse(v string) (p parsed, ok bool) { | |||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	if v[0] != '.' { | 	if v[0] != '.' { | ||||||
| 		p.err = "bad patch prefix" |  | ||||||
| 		ok = false | 		ok = false | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	p.patch, v, ok = parseInt(v[1:]) | 	p.patch, v, ok = parseInt(v[1:]) | ||||||
| 	if !ok { | 	if !ok { | ||||||
| 		p.err = "bad patch version" |  | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	if len(v) > 0 && v[0] == '-' { | 	if len(v) > 0 && v[0] == '-' { | ||||||
| 		p.prerelease, v, ok = parsePrerelease(v) | 		p.prerelease, v, ok = parsePrerelease(v) | ||||||
| 		if !ok { | 		if !ok { | ||||||
| 			p.err = "bad prerelease" |  | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	if len(v) > 0 && v[0] == '+' { | 	if len(v) > 0 && v[0] == '+' { | ||||||
| 		p.build, v, ok = parseBuild(v) | 		p.build, v, ok = parseBuild(v) | ||||||
| 		if !ok { | 		if !ok { | ||||||
| 			p.err = "bad build" |  | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	if v != "" { | 	if v != "" { | ||||||
| 		p.err = "junk on end" |  | ||||||
| 		ok = false | 		ok = false | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -17,7 +17,6 @@ | |||||||
| // developer tools, which will then be able to consume both Go 1.7 and | // developer tools, which will then be able to consume both Go 1.7 and | ||||||
| // Go 1.8 export data files, so they will work before and after the | // Go 1.8 export data files, so they will work before and after the | ||||||
| // Go update. (See discussion at https://golang.org/issue/15651.) | // Go update. (See discussion at https://golang.org/issue/15651.) | ||||||
| // |  | ||||||
| package gcexportdata // import "golang.org/x/tools/go/gcexportdata" | package gcexportdata // import "golang.org/x/tools/go/gcexportdata" | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/tools/go/gcexportdata/importer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/tools/go/gcexportdata/importer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -22,7 +22,6 @@ import ( | |||||||
| // version-skew problems described in the documentation of this package, | // version-skew problems described in the documentation of this package, | ||||||
| // or to control the FileSet or access the imports map populated during | // or to control the FileSet or access the imports map populated during | ||||||
| // package loading. | // package loading. | ||||||
| // |  | ||||||
| func NewImporter(fset *token.FileSet, imports map[string]*types.Package) types.ImporterFrom { | func NewImporter(fset *token.FileSet, imports map[string]*types.Package) types.ImporterFrom { | ||||||
| 	return importer{fset, imports} | 	return importer{fset, imports} | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										20
									
								
								vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -35,16 +35,18 @@ import ( | |||||||
| const debugFormat = false // default: false | const debugFormat = false // default: false | ||||||
|  |  | ||||||
| // Current export format version. Increase with each format change. | // Current export format version. Increase with each format change. | ||||||
|  | // | ||||||
| // Note: The latest binary (non-indexed) export format is at version 6. | // Note: The latest binary (non-indexed) export format is at version 6. | ||||||
| //       This exporter is still at level 4, but it doesn't matter since | // This exporter is still at level 4, but it doesn't matter since | ||||||
| //       the binary importer can handle older versions just fine. | // the binary importer can handle older versions just fine. | ||||||
| // 6: package height (CL 105038) -- NOT IMPLEMENTED HERE | // | ||||||
| // 5: improved position encoding efficiency (issue 20080, CL 41619) -- NOT IMPLEMEMTED HERE | //	6: package height (CL 105038) -- NOT IMPLEMENTED HERE | ||||||
| // 4: type name objects support type aliases, uses aliasTag | //	5: improved position encoding efficiency (issue 20080, CL 41619) -- NOT IMPLEMENTED HERE | ||||||
| // 3: Go1.8 encoding (same as version 2, aliasTag defined but never used) | //	4: type name objects support type aliases, uses aliasTag | ||||||
| // 2: removed unused bool in ODCL export (compiler only) | //	3: Go1.8 encoding (same as version 2, aliasTag defined but never used) | ||||||
| // 1: header format change (more regular), export package for _ struct fields | //	2: removed unused bool in ODCL export (compiler only) | ||||||
| // 0: Go1.7 encoding | //	1: header format change (more regular), export package for _ struct fields | ||||||
|  | //	0: Go1.7 encoding | ||||||
| const exportVersion = 4 | const exportVersion = 4 | ||||||
|  |  | ||||||
| // trackAllTypes enables cycle tracking for all types, not just named | // trackAllTypes enables cycle tracking for all types, not just named | ||||||
|  | |||||||
							
								
								
									
										133
									
								
								vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										133
									
								
								vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -45,7 +45,6 @@ var pkgExts = [...]string{".a", ".o"} | |||||||
| // the build.Default build.Context). A relative srcDir is interpreted | // the build.Default build.Context). A relative srcDir is interpreted | ||||||
| // relative to the current working directory. | // relative to the current working directory. | ||||||
| // If no file was found, an empty filename is returned. | // If no file was found, an empty filename is returned. | ||||||
| // |  | ||||||
| func FindPkg(path, srcDir string) (filename, id string) { | func FindPkg(path, srcDir string) (filename, id string) { | ||||||
| 	if path == "" { | 	if path == "" { | ||||||
| 		return | 		return | ||||||
| @ -109,7 +108,6 @@ func FindPkg(path, srcDir string) (filename, id string) { | |||||||
| // If packages[id] contains the completely imported package, that package | // If packages[id] contains the completely imported package, that package | ||||||
| // can be used directly, and there is no need to call this function (but | // can be used directly, and there is no need to call this function (but | ||||||
| // there is also no harm but for extra time used). | // there is also no harm but for extra time used). | ||||||
| // |  | ||||||
| func ImportData(packages map[string]*types.Package, filename, id string, data io.Reader) (pkg *types.Package, err error) { | func ImportData(packages map[string]*types.Package, filename, id string, data io.Reader) (pkg *types.Package, err error) { | ||||||
| 	// support for parser error handling | 	// support for parser error handling | ||||||
| 	defer func() { | 	defer func() { | ||||||
| @ -133,7 +131,6 @@ func ImportData(packages map[string]*types.Package, filename, id string, data io | |||||||
| // Import imports a gc-generated package given its import path and srcDir, adds | // 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 corresponding package object to the packages map, and returns the object. | ||||||
| // The packages map must contain all packages already imported. | // The packages map must contain all packages already imported. | ||||||
| // |  | ||||||
| func Import(packages map[string]*types.Package, path, srcDir string, lookup func(path string) (io.ReadCloser, error)) (pkg *types.Package, err error) { | func Import(packages map[string]*types.Package, path, srcDir string, lookup func(path string) (io.ReadCloser, error)) (pkg *types.Package, err error) { | ||||||
| 	var rc io.ReadCloser | 	var rc io.ReadCloser | ||||||
| 	var filename, id string | 	var filename, id string | ||||||
| @ -348,8 +345,9 @@ func (p *parser) expectKeyword(keyword string) { | |||||||
| // ---------------------------------------------------------------------------- | // ---------------------------------------------------------------------------- | ||||||
| // Qualified and unqualified names | // Qualified and unqualified names | ||||||
|  |  | ||||||
| // PackageId = string_lit . | // parsePackageID parses a PackageId: | ||||||
| // | // | ||||||
|  | //	PackageId = string_lit . | ||||||
| func (p *parser) parsePackageID() string { | func (p *parser) parsePackageID() string { | ||||||
| 	id, err := strconv.Unquote(p.expect(scanner.String)) | 	id, err := strconv.Unquote(p.expect(scanner.String)) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| @ -363,13 +361,16 @@ func (p *parser) parsePackageID() string { | |||||||
| 	return id | 	return id | ||||||
| } | } | ||||||
|  |  | ||||||
| // PackageName = ident . | // parsePackageName parse a PackageName: | ||||||
| // | // | ||||||
|  | //	PackageName = ident . | ||||||
| func (p *parser) parsePackageName() string { | func (p *parser) parsePackageName() string { | ||||||
| 	return p.expect(scanner.Ident) | 	return p.expect(scanner.Ident) | ||||||
| } | } | ||||||
|  |  | ||||||
| // dotIdentifier = ( ident | '·' ) { ident | int | '·' } . | // parseDotIdent parses a dotIdentifier: | ||||||
|  | // | ||||||
|  | //	dotIdentifier = ( ident | '·' ) { ident | int | '·' } . | ||||||
| func (p *parser) parseDotIdent() string { | func (p *parser) parseDotIdent() string { | ||||||
| 	ident := "" | 	ident := "" | ||||||
| 	if p.tok != scanner.Int { | 	if p.tok != scanner.Int { | ||||||
| @ -386,8 +387,9 @@ func (p *parser) parseDotIdent() string { | |||||||
| 	return ident | 	return ident | ||||||
| } | } | ||||||
|  |  | ||||||
| // QualifiedName = "@" PackageId "." ( "?" | dotIdentifier ) . | // parseQualifiedName parses a QualifiedName: | ||||||
| // | // | ||||||
|  | //	QualifiedName = "@" PackageId "." ( "?" | dotIdentifier ) . | ||||||
| func (p *parser) parseQualifiedName() (id, name string) { | func (p *parser) parseQualifiedName() (id, name string) { | ||||||
| 	p.expect('@') | 	p.expect('@') | ||||||
| 	id = p.parsePackageID() | 	id = p.parsePackageID() | ||||||
| @ -410,7 +412,6 @@ func (p *parser) parseQualifiedName() (id, name string) { | |||||||
| // id identifies a package, usually by a canonical package path like | // id identifies a package, usually by a canonical package path like | ||||||
| // "encoding/json" but possibly by a non-canonical import path like | // "encoding/json" but possibly by a non-canonical import path like | ||||||
| // "./json". | // "./json". | ||||||
| // |  | ||||||
| func (p *parser) getPkg(id, name string) *types.Package { | func (p *parser) getPkg(id, name string) *types.Package { | ||||||
| 	// package unsafe is not in the packages maps - handle explicitly | 	// package unsafe is not in the packages maps - handle explicitly | ||||||
| 	if id == "unsafe" { | 	if id == "unsafe" { | ||||||
| @ -446,7 +447,6 @@ func (p *parser) getPkg(id, name string) *types.Package { | |||||||
|  |  | ||||||
| // parseExportedName is like parseQualifiedName, but | // parseExportedName is like parseQualifiedName, but | ||||||
| // the package id is resolved to an imported *types.Package. | // the package id is resolved to an imported *types.Package. | ||||||
| // |  | ||||||
| func (p *parser) parseExportedName() (pkg *types.Package, name string) { | func (p *parser) parseExportedName() (pkg *types.Package, name string) { | ||||||
| 	id, name := p.parseQualifiedName() | 	id, name := p.parseQualifiedName() | ||||||
| 	pkg = p.getPkg(id, "") | 	pkg = p.getPkg(id, "") | ||||||
| @ -456,8 +456,9 @@ func (p *parser) parseExportedName() (pkg *types.Package, name string) { | |||||||
| // ---------------------------------------------------------------------------- | // ---------------------------------------------------------------------------- | ||||||
| // Types | // Types | ||||||
|  |  | ||||||
| // BasicType = identifier . | // parseBasicType parses a BasicType: | ||||||
| // | // | ||||||
|  | //	BasicType = identifier . | ||||||
| func (p *parser) parseBasicType() types.Type { | func (p *parser) parseBasicType() types.Type { | ||||||
| 	id := p.expect(scanner.Ident) | 	id := p.expect(scanner.Ident) | ||||||
| 	obj := types.Universe.Lookup(id) | 	obj := types.Universe.Lookup(id) | ||||||
| @ -468,8 +469,9 @@ func (p *parser) parseBasicType() types.Type { | |||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| // ArrayType = "[" int_lit "]" Type . | // parseArrayType parses an ArrayType: | ||||||
| // | // | ||||||
|  | //	ArrayType = "[" int_lit "]" Type . | ||||||
| func (p *parser) parseArrayType(parent *types.Package) types.Type { | func (p *parser) parseArrayType(parent *types.Package) types.Type { | ||||||
| 	// "[" already consumed and lookahead known not to be "]" | 	// "[" already consumed and lookahead known not to be "]" | ||||||
| 	lit := p.expect(scanner.Int) | 	lit := p.expect(scanner.Int) | ||||||
| @ -482,8 +484,9 @@ func (p *parser) parseArrayType(parent *types.Package) types.Type { | |||||||
| 	return types.NewArray(elem, n) | 	return types.NewArray(elem, n) | ||||||
| } | } | ||||||
|  |  | ||||||
| // MapType = "map" "[" Type "]" Type . | // parseMapType parses a MapType: | ||||||
| // | // | ||||||
|  | //	MapType = "map" "[" Type "]" Type . | ||||||
| func (p *parser) parseMapType(parent *types.Package) types.Type { | func (p *parser) parseMapType(parent *types.Package) types.Type { | ||||||
| 	p.expectKeyword("map") | 	p.expectKeyword("map") | ||||||
| 	p.expect('[') | 	p.expect('[') | ||||||
| @ -493,7 +496,9 @@ func (p *parser) parseMapType(parent *types.Package) types.Type { | |||||||
| 	return types.NewMap(key, elem) | 	return types.NewMap(key, elem) | ||||||
| } | } | ||||||
|  |  | ||||||
| // Name = identifier | "?" | QualifiedName . | // parseName parses a Name: | ||||||
|  | // | ||||||
|  | //	Name = identifier | "?" | QualifiedName . | ||||||
| // | // | ||||||
| // For unqualified and anonymous names, the returned package is the parent | // For unqualified and anonymous names, the returned package is the parent | ||||||
| // package unless parent == nil, in which case the returned package is the | // package unless parent == nil, in which case the returned package is the | ||||||
| @ -505,7 +510,6 @@ func (p *parser) parseMapType(parent *types.Package) types.Type { | |||||||
| // it doesn't exist yet) unless materializePkg is set (which creates an | // it doesn't exist yet) unless materializePkg is set (which creates an | ||||||
| // unnamed package with valid package path). In the latter case, a | // unnamed package with valid package path). In the latter case, a | ||||||
| // subsequent import clause is expected to provide a name for the package. | // subsequent import clause is expected to provide a name for the package. | ||||||
| // |  | ||||||
| func (p *parser) parseName(parent *types.Package, materializePkg bool) (pkg *types.Package, name string) { | func (p *parser) parseName(parent *types.Package, materializePkg bool) (pkg *types.Package, name string) { | ||||||
| 	pkg = parent | 	pkg = parent | ||||||
| 	if pkg == nil { | 	if pkg == nil { | ||||||
| @ -539,8 +543,9 @@ func deref(typ types.Type) types.Type { | |||||||
| 	return typ | 	return typ | ||||||
| } | } | ||||||
|  |  | ||||||
| // Field = Name Type [ string_lit ] . | // parseField parses a Field: | ||||||
| // | // | ||||||
|  | //	Field = Name Type [ string_lit ] . | ||||||
| func (p *parser) parseField(parent *types.Package) (*types.Var, string) { | func (p *parser) parseField(parent *types.Package) (*types.Var, string) { | ||||||
| 	pkg, name := p.parseName(parent, true) | 	pkg, name := p.parseName(parent, true) | ||||||
|  |  | ||||||
| @ -583,9 +588,10 @@ func (p *parser) parseField(parent *types.Package) (*types.Var, string) { | |||||||
| 	return types.NewField(token.NoPos, pkg, name, typ, anonymous), tag | 	return types.NewField(token.NoPos, pkg, name, typ, anonymous), tag | ||||||
| } | } | ||||||
|  |  | ||||||
| // StructType = "struct" "{" [ FieldList ] "}" . | // parseStructType parses a StructType: | ||||||
| // FieldList  = Field { ";" Field } . |  | ||||||
| // | // | ||||||
|  | //	StructType = "struct" "{" [ FieldList ] "}" . | ||||||
|  | //	FieldList  = Field { ";" Field } . | ||||||
| func (p *parser) parseStructType(parent *types.Package) types.Type { | func (p *parser) parseStructType(parent *types.Package) types.Type { | ||||||
| 	var fields []*types.Var | 	var fields []*types.Var | ||||||
| 	var tags []string | 	var tags []string | ||||||
| @ -610,8 +616,9 @@ func (p *parser) parseStructType(parent *types.Package) types.Type { | |||||||
| 	return types.NewStruct(fields, tags) | 	return types.NewStruct(fields, tags) | ||||||
| } | } | ||||||
|  |  | ||||||
| // Parameter = ( identifier | "?" ) [ "..." ] Type [ string_lit ] . | // parseParameter parses a Parameter: | ||||||
| // | // | ||||||
|  | //	Parameter = ( identifier | "?" ) [ "..." ] Type [ string_lit ] . | ||||||
| func (p *parser) parseParameter() (par *types.Var, isVariadic bool) { | func (p *parser) parseParameter() (par *types.Var, isVariadic bool) { | ||||||
| 	_, name := p.parseName(nil, false) | 	_, name := p.parseName(nil, false) | ||||||
| 	// remove gc-specific parameter numbering | 	// remove gc-specific parameter numbering | ||||||
| @ -635,9 +642,10 @@ func (p *parser) parseParameter() (par *types.Var, isVariadic bool) { | |||||||
| 	return | 	return | ||||||
| } | } | ||||||
|  |  | ||||||
| // Parameters    = "(" [ ParameterList ] ")" . | // parseParameters parses a Parameters: | ||||||
| // ParameterList = { Parameter "," } Parameter . |  | ||||||
| // | // | ||||||
|  | //	Parameters    = "(" [ ParameterList ] ")" . | ||||||
|  | //	ParameterList = { Parameter "," } Parameter . | ||||||
| func (p *parser) parseParameters() (list []*types.Var, isVariadic bool) { | func (p *parser) parseParameters() (list []*types.Var, isVariadic bool) { | ||||||
| 	p.expect('(') | 	p.expect('(') | ||||||
| 	for p.tok != ')' && p.tok != scanner.EOF { | 	for p.tok != ')' && p.tok != scanner.EOF { | ||||||
| @ -658,9 +666,10 @@ func (p *parser) parseParameters() (list []*types.Var, isVariadic bool) { | |||||||
| 	return | 	return | ||||||
| } | } | ||||||
|  |  | ||||||
| // Signature = Parameters [ Result ] . | // parseSignature parses a Signature: | ||||||
| // Result    = Type | Parameters . |  | ||||||
| // | // | ||||||
|  | //	Signature = Parameters [ Result ] . | ||||||
|  | //	Result    = Type | Parameters . | ||||||
| func (p *parser) parseSignature(recv *types.Var) *types.Signature { | func (p *parser) parseSignature(recv *types.Var) *types.Signature { | ||||||
| 	params, isVariadic := p.parseParameters() | 	params, isVariadic := p.parseParameters() | ||||||
|  |  | ||||||
| @ -677,14 +686,15 @@ func (p *parser) parseSignature(recv *types.Var) *types.Signature { | |||||||
| 	return types.NewSignature(recv, types.NewTuple(params...), types.NewTuple(results...), isVariadic) | 	return types.NewSignature(recv, types.NewTuple(params...), types.NewTuple(results...), isVariadic) | ||||||
| } | } | ||||||
|  |  | ||||||
| // InterfaceType = "interface" "{" [ MethodList ] "}" . | // parseInterfaceType parses an InterfaceType: | ||||||
| // MethodList    = Method { ";" Method } . | // | ||||||
| // Method        = Name Signature . | //	InterfaceType = "interface" "{" [ MethodList ] "}" . | ||||||
|  | //	MethodList    = Method { ";" Method } . | ||||||
|  | //	Method        = Name Signature . | ||||||
| // | // | ||||||
| // The methods of embedded interfaces are always "inlined" | // The methods of embedded interfaces are always "inlined" | ||||||
| // by the compiler and thus embedded interfaces are never | // by the compiler and thus embedded interfaces are never | ||||||
| // visible in the export data. | // visible in the export data. | ||||||
| // |  | ||||||
| func (p *parser) parseInterfaceType(parent *types.Package) types.Type { | func (p *parser) parseInterfaceType(parent *types.Package) types.Type { | ||||||
| 	var methods []*types.Func | 	var methods []*types.Func | ||||||
|  |  | ||||||
| @ -705,8 +715,9 @@ func (p *parser) parseInterfaceType(parent *types.Package) types.Type { | |||||||
| 	return newInterface(methods, nil).Complete() | 	return newInterface(methods, nil).Complete() | ||||||
| } | } | ||||||
|  |  | ||||||
| // ChanType = ( "chan" [ "<-" ] | "<-" "chan" ) Type . | // parseChanType parses a ChanType: | ||||||
| // | // | ||||||
|  | //	ChanType = ( "chan" [ "<-" ] | "<-" "chan" ) Type . | ||||||
| func (p *parser) parseChanType(parent *types.Package) types.Type { | func (p *parser) parseChanType(parent *types.Package) types.Type { | ||||||
| 	dir := types.SendRecv | 	dir := types.SendRecv | ||||||
| 	if p.tok == scanner.Ident { | 	if p.tok == scanner.Ident { | ||||||
| @ -724,17 +735,18 @@ func (p *parser) parseChanType(parent *types.Package) types.Type { | |||||||
| 	return types.NewChan(dir, elem) | 	return types.NewChan(dir, elem) | ||||||
| } | } | ||||||
|  |  | ||||||
| // Type = | // parseType parses a Type: | ||||||
| //	BasicType | TypeName | ArrayType | SliceType | StructType | |  | ||||||
| //      PointerType | FuncType | InterfaceType | MapType | ChanType | |  | ||||||
| //      "(" Type ")" . |  | ||||||
| // | // | ||||||
| // BasicType   = ident . | //	Type = | ||||||
| // TypeName    = ExportedName . | //		BasicType | TypeName | ArrayType | SliceType | StructType | | ||||||
| // SliceType   = "[" "]" Type . | //		PointerType | FuncType | InterfaceType | MapType | ChanType | | ||||||
| // PointerType = "*" Type . | //		"(" Type ")" . | ||||||
| // FuncType    = "func" Signature . |  | ||||||
| // | // | ||||||
|  | //	BasicType   = ident . | ||||||
|  | //	TypeName    = ExportedName . | ||||||
|  | //	SliceType   = "[" "]" Type . | ||||||
|  | //	PointerType = "*" Type . | ||||||
|  | //	FuncType    = "func" Signature . | ||||||
| func (p *parser) parseType(parent *types.Package) types.Type { | func (p *parser) parseType(parent *types.Package) types.Type { | ||||||
| 	switch p.tok { | 	switch p.tok { | ||||||
| 	case scanner.Ident: | 	case scanner.Ident: | ||||||
| @ -786,16 +798,18 @@ func (p *parser) parseType(parent *types.Package) types.Type { | |||||||
| // ---------------------------------------------------------------------------- | // ---------------------------------------------------------------------------- | ||||||
| // Declarations | // Declarations | ||||||
|  |  | ||||||
| // ImportDecl = "import" PackageName PackageId . | // parseImportDecl parses an ImportDecl: | ||||||
| // | // | ||||||
|  | //	ImportDecl = "import" PackageName PackageId . | ||||||
| func (p *parser) parseImportDecl() { | func (p *parser) parseImportDecl() { | ||||||
| 	p.expectKeyword("import") | 	p.expectKeyword("import") | ||||||
| 	name := p.parsePackageName() | 	name := p.parsePackageName() | ||||||
| 	p.getPkg(p.parsePackageID(), name) | 	p.getPkg(p.parsePackageID(), name) | ||||||
| } | } | ||||||
|  |  | ||||||
| // int_lit = [ "+" | "-" ] { "0" ... "9" } . | // parseInt parses an int_lit: | ||||||
| // | // | ||||||
|  | //	int_lit = [ "+" | "-" ] { "0" ... "9" } . | ||||||
| func (p *parser) parseInt() string { | func (p *parser) parseInt() string { | ||||||
| 	s := "" | 	s := "" | ||||||
| 	switch p.tok { | 	switch p.tok { | ||||||
| @ -808,8 +822,9 @@ func (p *parser) parseInt() string { | |||||||
| 	return s + p.expect(scanner.Int) | 	return s + p.expect(scanner.Int) | ||||||
| } | } | ||||||
|  |  | ||||||
| // number = int_lit [ "p" int_lit ] . | // parseNumber parses a number: | ||||||
| // | // | ||||||
|  | //	number = int_lit [ "p" int_lit ] . | ||||||
| func (p *parser) parseNumber() (typ *types.Basic, val constant.Value) { | func (p *parser) parseNumber() (typ *types.Basic, val constant.Value) { | ||||||
| 	// mantissa | 	// mantissa | ||||||
| 	mant := constant.MakeFromLiteral(p.parseInt(), token.INT, 0) | 	mant := constant.MakeFromLiteral(p.parseInt(), token.INT, 0) | ||||||
| @ -844,13 +859,14 @@ func (p *parser) parseNumber() (typ *types.Basic, val constant.Value) { | |||||||
| 	return | 	return | ||||||
| } | } | ||||||
|  |  | ||||||
| // ConstDecl   = "const" ExportedName [ Type ] "=" Literal . | // parseConstDecl parses a ConstDecl: | ||||||
| // Literal     = bool_lit | int_lit | float_lit | complex_lit | rune_lit | string_lit . |  | ||||||
| // bool_lit    = "true" | "false" . |  | ||||||
| // complex_lit = "(" float_lit "+" float_lit "i" ")" . |  | ||||||
| // rune_lit    = "(" int_lit "+" int_lit ")" . |  | ||||||
| // string_lit  = `"` { unicode_char } `"` . |  | ||||||
| // | // | ||||||
|  | //	ConstDecl   = "const" ExportedName [ Type ] "=" Literal . | ||||||
|  | //	Literal     = bool_lit | int_lit | float_lit | complex_lit | rune_lit | string_lit . | ||||||
|  | //	bool_lit    = "true" | "false" . | ||||||
|  | //	complex_lit = "(" float_lit "+" float_lit "i" ")" . | ||||||
|  | //	rune_lit    = "(" int_lit "+" int_lit ")" . | ||||||
|  | //	string_lit  = `"` { unicode_char } `"` . | ||||||
| func (p *parser) parseConstDecl() { | func (p *parser) parseConstDecl() { | ||||||
| 	p.expectKeyword("const") | 	p.expectKeyword("const") | ||||||
| 	pkg, name := p.parseExportedName() | 	pkg, name := p.parseExportedName() | ||||||
| @ -920,8 +936,9 @@ func (p *parser) parseConstDecl() { | |||||||
| 	pkg.Scope().Insert(types.NewConst(token.NoPos, pkg, name, typ0, val)) | 	pkg.Scope().Insert(types.NewConst(token.NoPos, pkg, name, typ0, val)) | ||||||
| } | } | ||||||
|  |  | ||||||
| // TypeDecl = "type" ExportedName Type . | // parseTypeDecl parses a TypeDecl: | ||||||
| // | // | ||||||
|  | //	TypeDecl = "type" ExportedName Type . | ||||||
| func (p *parser) parseTypeDecl() { | func (p *parser) parseTypeDecl() { | ||||||
| 	p.expectKeyword("type") | 	p.expectKeyword("type") | ||||||
| 	pkg, name := p.parseExportedName() | 	pkg, name := p.parseExportedName() | ||||||
| @ -939,8 +956,9 @@ func (p *parser) parseTypeDecl() { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| // VarDecl = "var" ExportedName Type . | // parseVarDecl parses a VarDecl: | ||||||
| // | // | ||||||
|  | //	VarDecl = "var" ExportedName Type . | ||||||
| func (p *parser) parseVarDecl() { | func (p *parser) parseVarDecl() { | ||||||
| 	p.expectKeyword("var") | 	p.expectKeyword("var") | ||||||
| 	pkg, name := p.parseExportedName() | 	pkg, name := p.parseExportedName() | ||||||
| @ -948,9 +966,10 @@ func (p *parser) parseVarDecl() { | |||||||
| 	pkg.Scope().Insert(types.NewVar(token.NoPos, pkg, name, typ)) | 	pkg.Scope().Insert(types.NewVar(token.NoPos, pkg, name, typ)) | ||||||
| } | } | ||||||
|  |  | ||||||
| // Func = Signature [ Body ] . | // parseFunc parses a Func: | ||||||
| // Body = "{" ... "}" . |  | ||||||
| // | // | ||||||
|  | //	Func = Signature [ Body ] . | ||||||
|  | //	Body = "{" ... "}" . | ||||||
| func (p *parser) parseFunc(recv *types.Var) *types.Signature { | func (p *parser) parseFunc(recv *types.Var) *types.Signature { | ||||||
| 	sig := p.parseSignature(recv) | 	sig := p.parseSignature(recv) | ||||||
| 	if p.tok == '{' { | 	if p.tok == '{' { | ||||||
| @ -967,9 +986,10 @@ func (p *parser) parseFunc(recv *types.Var) *types.Signature { | |||||||
| 	return sig | 	return sig | ||||||
| } | } | ||||||
|  |  | ||||||
| // MethodDecl = "func" Receiver Name Func . | // parseMethodDecl parses a MethodDecl: | ||||||
| // Receiver   = "(" ( identifier | "?" ) [ "*" ] ExportedName ")" . |  | ||||||
| // | // | ||||||
|  | //	MethodDecl = "func" Receiver Name Func . | ||||||
|  | //	Receiver   = "(" ( identifier | "?" ) [ "*" ] ExportedName ")" . | ||||||
| func (p *parser) parseMethodDecl() { | func (p *parser) parseMethodDecl() { | ||||||
| 	// "func" already consumed | 	// "func" already consumed | ||||||
| 	p.expect('(') | 	p.expect('(') | ||||||
| @ -992,8 +1012,9 @@ func (p *parser) parseMethodDecl() { | |||||||
| 	base.AddMethod(types.NewFunc(token.NoPos, pkg, name, sig)) | 	base.AddMethod(types.NewFunc(token.NoPos, pkg, name, sig)) | ||||||
| } | } | ||||||
|  |  | ||||||
| // FuncDecl = "func" ExportedName Func . | // parseFuncDecl parses a FuncDecl: | ||||||
| // | // | ||||||
|  | //	FuncDecl = "func" ExportedName Func . | ||||||
| func (p *parser) parseFuncDecl() { | func (p *parser) parseFuncDecl() { | ||||||
| 	// "func" already consumed | 	// "func" already consumed | ||||||
| 	pkg, name := p.parseExportedName() | 	pkg, name := p.parseExportedName() | ||||||
| @ -1001,8 +1022,9 @@ func (p *parser) parseFuncDecl() { | |||||||
| 	pkg.Scope().Insert(types.NewFunc(token.NoPos, pkg, name, typ)) | 	pkg.Scope().Insert(types.NewFunc(token.NoPos, pkg, name, typ)) | ||||||
| } | } | ||||||
|  |  | ||||||
| // Decl = [ ImportDecl | ConstDecl | TypeDecl | VarDecl | FuncDecl | MethodDecl ] "\n" . | // parseDecl parses a Decl: | ||||||
| // | // | ||||||
|  | //	Decl = [ ImportDecl | ConstDecl | TypeDecl | VarDecl | FuncDecl | MethodDecl ] "\n" . | ||||||
| func (p *parser) parseDecl() { | func (p *parser) parseDecl() { | ||||||
| 	if p.tok == scanner.Ident { | 	if p.tok == scanner.Ident { | ||||||
| 		switch p.lit { | 		switch p.lit { | ||||||
| @ -1029,9 +1051,10 @@ func (p *parser) parseDecl() { | |||||||
| // ---------------------------------------------------------------------------- | // ---------------------------------------------------------------------------- | ||||||
| // Export | // Export | ||||||
|  |  | ||||||
| // Export        = "PackageClause { Decl } "$$" . | // parseExport parses an Export: | ||||||
| // PackageClause = "package" PackageName [ "safe" ] "\n" . |  | ||||||
| // | // | ||||||
|  | //	Export        = "PackageClause { Decl } "$$" . | ||||||
|  | //	PackageClause = "package" PackageName [ "safe" ] "\n" . | ||||||
| func (p *parser) parseExport() *types.Package { | func (p *parser) parseExport() *types.Package { | ||||||
| 	p.expectKeyword("package") | 	p.expectKeyword("package") | ||||||
| 	name := p.parsePackageName() | 	name := p.parsePackageName() | ||||||
|  | |||||||
							
								
								
									
										5
									
								
								vendor/golang.org/x/tools/go/internal/gcimporter/iexport.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/golang.org/x/tools/go/internal/gcimporter/iexport.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -251,7 +251,10 @@ func (p *iexporter) stringOff(s string) uint64 { | |||||||
| // pushDecl adds n to the declaration work queue, if not already present. | // pushDecl adds n to the declaration work queue, if not already present. | ||||||
| func (p *iexporter) pushDecl(obj types.Object) { | func (p *iexporter) pushDecl(obj types.Object) { | ||||||
| 	// Package unsafe is known to the compiler and predeclared. | 	// Package unsafe is known to the compiler and predeclared. | ||||||
| 	assert(obj.Pkg() != types.Unsafe) | 	// Caller should not ask us to do export it. | ||||||
|  | 	if obj.Pkg() == types.Unsafe { | ||||||
|  | 		panic("cannot export package unsafe") | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	if _, ok := p.declIndex[obj]; ok { | 	if _, ok := p.declIndex[obj]; ok { | ||||||
| 		return | 		return | ||||||
|  | |||||||
							
								
								
									
										33
									
								
								vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										33
									
								
								vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -53,7 +53,7 @@ const ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| type ident struct { | type ident struct { | ||||||
| 	pkg  string | 	pkg  *types.Package | ||||||
| 	name string | 	name string | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -100,7 +100,9 @@ func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data | |||||||
| 	if !debug { | 	if !debug { | ||||||
| 		defer func() { | 		defer func() { | ||||||
| 			if e := recover(); e != nil { | 			if e := recover(); e != nil { | ||||||
| 				if version > currentVersion { | 				if bundle { | ||||||
|  | 					err = fmt.Errorf("%v", e) | ||||||
|  | 				} else if version > currentVersion { | ||||||
| 					err = fmt.Errorf("cannot import %q (%v), export data is newer version - update tool", path, e) | 					err = fmt.Errorf("cannot import %q (%v), export data is newer version - update tool", path, e) | ||||||
| 				} else { | 				} else { | ||||||
| 					err = fmt.Errorf("cannot import %q (%v), possibly version skew - reinstall package", path, e) | 					err = fmt.Errorf("cannot import %q (%v), possibly version skew - reinstall package", path, e) | ||||||
| @ -237,6 +239,15 @@ func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data | |||||||
| 		pkg.MarkComplete() | 		pkg.MarkComplete() | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	// SetConstraint can't be called if the constraint type is not yet complete. | ||||||
|  | 	// When type params are created in the 'P' case of (*importReader).obj(), | ||||||
|  | 	// the associated constraint type may not be complete due to recursion. | ||||||
|  | 	// Therefore, we defer calling SetConstraint there, and call it here instead | ||||||
|  | 	// after all types are complete. | ||||||
|  | 	for _, d := range p.later { | ||||||
|  | 		typeparams.SetTypeParamConstraint(d.t, d.constraint) | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	for _, typ := range p.interfaceList { | 	for _, typ := range p.interfaceList { | ||||||
| 		typ.Complete() | 		typ.Complete() | ||||||
| 	} | 	} | ||||||
| @ -244,6 +255,11 @@ func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data | |||||||
| 	return pkgs, nil | 	return pkgs, nil | ||||||
| } | } | ||||||
|  |  | ||||||
|  | type setConstraintArgs struct { | ||||||
|  | 	t          *typeparams.TypeParam | ||||||
|  | 	constraint types.Type | ||||||
|  | } | ||||||
|  |  | ||||||
| type iimporter struct { | type iimporter struct { | ||||||
| 	version int | 	version int | ||||||
| 	ipath   string | 	ipath   string | ||||||
| @ -260,6 +276,9 @@ type iimporter struct { | |||||||
| 	fake          fakeFileSet | 	fake          fakeFileSet | ||||||
| 	interfaceList []*types.Interface | 	interfaceList []*types.Interface | ||||||
|  |  | ||||||
|  | 	// Arguments for calls to SetConstraint that are deferred due to recursive types | ||||||
|  | 	later []setConstraintArgs | ||||||
|  |  | ||||||
| 	indent int // for tracing support | 	indent int // for tracing support | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -444,7 +463,7 @@ func (r *importReader) obj(name string) { | |||||||
|  |  | ||||||
| 		// To handle recursive references to the typeparam within its | 		// To handle recursive references to the typeparam within its | ||||||
| 		// bound, save the partial type in tparamIndex before reading the bounds. | 		// bound, save the partial type in tparamIndex before reading the bounds. | ||||||
| 		id := ident{r.currPkg.Name(), name} | 		id := ident{r.currPkg, name} | ||||||
| 		r.p.tparamIndex[id] = t | 		r.p.tparamIndex[id] = t | ||||||
| 		var implicit bool | 		var implicit bool | ||||||
| 		if r.p.version >= iexportVersionGo1_18 { | 		if r.p.version >= iexportVersionGo1_18 { | ||||||
| @ -458,7 +477,11 @@ func (r *importReader) obj(name string) { | |||||||
| 			} | 			} | ||||||
| 			typeparams.MarkImplicit(iface) | 			typeparams.MarkImplicit(iface) | ||||||
| 		} | 		} | ||||||
| 		typeparams.SetTypeParamConstraint(t, constraint) | 		// The constraint type may not be complete, if we | ||||||
|  | 		// are in the middle of a type recursion involving type | ||||||
|  | 		// constraints. So, we defer SetConstraint until we have | ||||||
|  | 		// completely set up all types in ImportData. | ||||||
|  | 		r.p.later = append(r.p.later, setConstraintArgs{t: t, constraint: constraint}) | ||||||
|  |  | ||||||
| 	case 'V': | 	case 'V': | ||||||
| 		typ := r.typ() | 		typ := r.typ() | ||||||
| @ -756,7 +779,7 @@ func (r *importReader) doType(base *types.Named) (res types.Type) { | |||||||
| 			errorf("unexpected type param type") | 			errorf("unexpected type param type") | ||||||
| 		} | 		} | ||||||
| 		pkg, name := r.qualifiedIdent() | 		pkg, name := r.qualifiedIdent() | ||||||
| 		id := ident{pkg.Name(), name} | 		id := ident{pkg, name} | ||||||
| 		if t, ok := r.p.tparamIndex[id]; ok { | 		if t, ok := r.p.tparamIndex[id]; ok { | ||||||
| 			// We're already in the process of importing this typeparam. | 			// We're already in the process of importing this typeparam. | ||||||
| 			return t | 			return t | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/tools/go/packages/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/tools/go/packages/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -67,7 +67,6 @@ Most tools should pass their command-line arguments (after any flags) | |||||||
| uninterpreted to the loader, so that the loader can interpret them | uninterpreted to the loader, so that the loader can interpret them | ||||||
| according to the conventions of the underlying build system. | according to the conventions of the underlying build system. | ||||||
| See the Example function for typical usage. | See the Example function for typical usage. | ||||||
|  |  | ||||||
| */ | */ | ||||||
| package packages // import "golang.org/x/tools/go/packages" | package packages // import "golang.org/x/tools/go/packages" | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										85
									
								
								vendor/golang.org/x/tools/go/packages/golist.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										85
									
								
								vendor/golang.org/x/tools/go/packages/golist.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -26,7 +26,6 @@ import ( | |||||||
| 	"golang.org/x/tools/go/internal/packagesdriver" | 	"golang.org/x/tools/go/internal/packagesdriver" | ||||||
| 	"golang.org/x/tools/internal/gocommand" | 	"golang.org/x/tools/internal/gocommand" | ||||||
| 	"golang.org/x/tools/internal/packagesinternal" | 	"golang.org/x/tools/internal/packagesinternal" | ||||||
| 	"golang.org/x/xerrors" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // debug controls verbose logging. | // debug controls verbose logging. | ||||||
| @ -393,6 +392,8 @@ type jsonPackage struct { | |||||||
| 	CompiledGoFiles   []string | 	CompiledGoFiles   []string | ||||||
| 	IgnoredGoFiles    []string | 	IgnoredGoFiles    []string | ||||||
| 	IgnoredOtherFiles []string | 	IgnoredOtherFiles []string | ||||||
|  | 	EmbedPatterns     []string | ||||||
|  | 	EmbedFiles        []string | ||||||
| 	CFiles            []string | 	CFiles            []string | ||||||
| 	CgoFiles          []string | 	CgoFiles          []string | ||||||
| 	CXXFiles          []string | 	CXXFiles          []string | ||||||
| @ -444,7 +445,11 @@ func (state *golistState) createDriverResponse(words ...string) (*driverResponse | |||||||
|  |  | ||||||
| 	// Run "go list" for complete | 	// Run "go list" for complete | ||||||
| 	// information on the specified packages. | 	// information on the specified packages. | ||||||
| 	buf, err := state.invokeGo("list", golistargs(state.cfg, words)...) | 	goVersion, err := state.getGoVersion() | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	buf, err := state.invokeGo("list", golistargs(state.cfg, words, goVersion)...) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| @ -565,6 +570,8 @@ func (state *golistState) createDriverResponse(words ...string) (*driverResponse | |||||||
| 			GoFiles:         absJoin(p.Dir, p.GoFiles, p.CgoFiles), | 			GoFiles:         absJoin(p.Dir, p.GoFiles, p.CgoFiles), | ||||||
| 			CompiledGoFiles: absJoin(p.Dir, p.CompiledGoFiles), | 			CompiledGoFiles: absJoin(p.Dir, p.CompiledGoFiles), | ||||||
| 			OtherFiles:      absJoin(p.Dir, otherFiles(p)...), | 			OtherFiles:      absJoin(p.Dir, otherFiles(p)...), | ||||||
|  | 			EmbedFiles:      absJoin(p.Dir, p.EmbedFiles), | ||||||
|  | 			EmbedPatterns:   absJoin(p.Dir, p.EmbedPatterns), | ||||||
| 			IgnoredFiles:    absJoin(p.Dir, p.IgnoredGoFiles, p.IgnoredOtherFiles), | 			IgnoredFiles:    absJoin(p.Dir, p.IgnoredGoFiles, p.IgnoredOtherFiles), | ||||||
| 			forTest:         p.ForTest, | 			forTest:         p.ForTest, | ||||||
| 			depsErrors:      p.DepsErrors, | 			depsErrors:      p.DepsErrors, | ||||||
| @ -805,17 +812,83 @@ func absJoin(dir string, fileses ...[]string) (res []string) { | |||||||
| 	return res | 	return res | ||||||
| } | } | ||||||
|  |  | ||||||
| func golistargs(cfg *Config, words []string) []string { | func jsonFlag(cfg *Config, goVersion int) string { | ||||||
|  | 	if goVersion < 19 { | ||||||
|  | 		return "-json" | ||||||
|  | 	} | ||||||
|  | 	var fields []string | ||||||
|  | 	added := make(map[string]bool) | ||||||
|  | 	addFields := func(fs ...string) { | ||||||
|  | 		for _, f := range fs { | ||||||
|  | 			if !added[f] { | ||||||
|  | 				added[f] = true | ||||||
|  | 				fields = append(fields, f) | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	addFields("Name", "ImportPath", "Error") // These fields are always needed | ||||||
|  | 	if cfg.Mode&NeedFiles != 0 || cfg.Mode&NeedTypes != 0 { | ||||||
|  | 		addFields("Dir", "GoFiles", "IgnoredGoFiles", "IgnoredOtherFiles", "CFiles", | ||||||
|  | 			"CgoFiles", "CXXFiles", "MFiles", "HFiles", "FFiles", "SFiles", | ||||||
|  | 			"SwigFiles", "SwigCXXFiles", "SysoFiles") | ||||||
|  | 		if cfg.Tests { | ||||||
|  | 			addFields("TestGoFiles", "XTestGoFiles") | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	if cfg.Mode&NeedTypes != 0 { | ||||||
|  | 		// CompiledGoFiles seems to be required for the test case TestCgoNoSyntax, | ||||||
|  | 		// even when -compiled isn't passed in. | ||||||
|  | 		// TODO(#52435): Should we make the test ask for -compiled, or automatically | ||||||
|  | 		// request CompiledGoFiles in certain circumstances? | ||||||
|  | 		addFields("Dir", "CompiledGoFiles") | ||||||
|  | 	} | ||||||
|  | 	if cfg.Mode&NeedCompiledGoFiles != 0 { | ||||||
|  | 		addFields("Dir", "CompiledGoFiles", "Export") | ||||||
|  | 	} | ||||||
|  | 	if cfg.Mode&NeedImports != 0 { | ||||||
|  | 		// When imports are requested, DepOnly is used to distinguish between packages | ||||||
|  | 		// explicitly requested and transitive imports of those packages. | ||||||
|  | 		addFields("DepOnly", "Imports", "ImportMap") | ||||||
|  | 		if cfg.Tests { | ||||||
|  | 			addFields("TestImports", "XTestImports") | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	if cfg.Mode&NeedDeps != 0 { | ||||||
|  | 		addFields("DepOnly") | ||||||
|  | 	} | ||||||
|  | 	if usesExportData(cfg) { | ||||||
|  | 		// Request Dir in the unlikely case Export is not absolute. | ||||||
|  | 		addFields("Dir", "Export") | ||||||
|  | 	} | ||||||
|  | 	if cfg.Mode&needInternalForTest != 0 { | ||||||
|  | 		addFields("ForTest") | ||||||
|  | 	} | ||||||
|  | 	if cfg.Mode&needInternalDepsErrors != 0 { | ||||||
|  | 		addFields("DepsErrors") | ||||||
|  | 	} | ||||||
|  | 	if cfg.Mode&NeedModule != 0 { | ||||||
|  | 		addFields("Module") | ||||||
|  | 	} | ||||||
|  | 	if cfg.Mode&NeedEmbedFiles != 0 { | ||||||
|  | 		addFields("EmbedFiles") | ||||||
|  | 	} | ||||||
|  | 	if cfg.Mode&NeedEmbedPatterns != 0 { | ||||||
|  | 		addFields("EmbedPatterns") | ||||||
|  | 	} | ||||||
|  | 	return "-json=" + strings.Join(fields, ",") | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func golistargs(cfg *Config, words []string, goVersion int) []string { | ||||||
| 	const findFlags = NeedImports | NeedTypes | NeedSyntax | NeedTypesInfo | 	const findFlags = NeedImports | NeedTypes | NeedSyntax | NeedTypesInfo | ||||||
| 	fullargs := []string{ | 	fullargs := []string{ | ||||||
| 		"-e", "-json", | 		"-e", jsonFlag(cfg, goVersion), | ||||||
| 		fmt.Sprintf("-compiled=%t", cfg.Mode&(NeedCompiledGoFiles|NeedSyntax|NeedTypes|NeedTypesInfo|NeedTypesSizes) != 0), | 		fmt.Sprintf("-compiled=%t", cfg.Mode&(NeedCompiledGoFiles|NeedSyntax|NeedTypes|NeedTypesInfo|NeedTypesSizes) != 0), | ||||||
| 		fmt.Sprintf("-test=%t", cfg.Tests), | 		fmt.Sprintf("-test=%t", cfg.Tests), | ||||||
| 		fmt.Sprintf("-export=%t", usesExportData(cfg)), | 		fmt.Sprintf("-export=%t", usesExportData(cfg)), | ||||||
| 		fmt.Sprintf("-deps=%t", cfg.Mode&NeedImports != 0), | 		fmt.Sprintf("-deps=%t", cfg.Mode&NeedImports != 0), | ||||||
| 		// go list doesn't let you pass -test and -find together, | 		// go list doesn't let you pass -test and -find together, | ||||||
| 		// probably because you'd just get the TestMain. | 		// probably because you'd just get the TestMain. | ||||||
| 		fmt.Sprintf("-find=%t", !cfg.Tests && cfg.Mode&findFlags == 0), | 		fmt.Sprintf("-find=%t", !cfg.Tests && cfg.Mode&findFlags == 0 && !usesExportData(cfg)), | ||||||
| 	} | 	} | ||||||
| 	fullargs = append(fullargs, cfg.BuildFlags...) | 	fullargs = append(fullargs, cfg.BuildFlags...) | ||||||
| 	fullargs = append(fullargs, "--") | 	fullargs = append(fullargs, "--") | ||||||
| @ -879,7 +952,7 @@ func (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer, | |||||||
| 		if !ok { | 		if !ok { | ||||||
| 			// Catastrophic error: | 			// Catastrophic error: | ||||||
| 			// - context cancellation | 			// - context cancellation | ||||||
| 			return nil, xerrors.Errorf("couldn't run 'go': %w", err) | 			return nil, fmt.Errorf("couldn't run 'go': %w", err) | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		// Old go version? | 		// Old go version? | ||||||
|  | |||||||
							
								
								
									
										4
									
								
								vendor/golang.org/x/tools/go/packages/loadmode_string.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/golang.org/x/tools/go/packages/loadmode_string.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -15,7 +15,7 @@ var allModes = []LoadMode{ | |||||||
| 	NeedCompiledGoFiles, | 	NeedCompiledGoFiles, | ||||||
| 	NeedImports, | 	NeedImports, | ||||||
| 	NeedDeps, | 	NeedDeps, | ||||||
| 	NeedExportsFile, | 	NeedExportFile, | ||||||
| 	NeedTypes, | 	NeedTypes, | ||||||
| 	NeedSyntax, | 	NeedSyntax, | ||||||
| 	NeedTypesInfo, | 	NeedTypesInfo, | ||||||
| @ -28,7 +28,7 @@ var modeStrings = []string{ | |||||||
| 	"NeedCompiledGoFiles", | 	"NeedCompiledGoFiles", | ||||||
| 	"NeedImports", | 	"NeedImports", | ||||||
| 	"NeedDeps", | 	"NeedDeps", | ||||||
| 	"NeedExportsFile", | 	"NeedExportFile", | ||||||
| 	"NeedTypes", | 	"NeedTypes", | ||||||
| 	"NeedSyntax", | 	"NeedSyntax", | ||||||
| 	"NeedTypesInfo", | 	"NeedTypesInfo", | ||||||
|  | |||||||
							
								
								
									
										73
									
								
								vendor/golang.org/x/tools/go/packages/packages.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										73
									
								
								vendor/golang.org/x/tools/go/packages/packages.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -39,9 +39,6 @@ import ( | |||||||
| // Load may return more information than requested. | // Load may return more information than requested. | ||||||
| type LoadMode int | type LoadMode int | ||||||
|  |  | ||||||
| // TODO(matloob): When a V2 of go/packages is released, rename NeedExportsFile to |  | ||||||
| // NeedExportFile to make it consistent with the Package field it's adding. |  | ||||||
|  |  | ||||||
| const ( | const ( | ||||||
| 	// NeedName adds Name and PkgPath. | 	// NeedName adds Name and PkgPath. | ||||||
| 	NeedName LoadMode = 1 << iota | 	NeedName LoadMode = 1 << iota | ||||||
| @ -59,8 +56,8 @@ const ( | |||||||
| 	// NeedDeps adds the fields requested by the LoadMode in the packages in Imports. | 	// NeedDeps adds the fields requested by the LoadMode in the packages in Imports. | ||||||
| 	NeedDeps | 	NeedDeps | ||||||
|  |  | ||||||
| 	// NeedExportsFile adds ExportFile. | 	// NeedExportFile adds ExportFile. | ||||||
| 	NeedExportsFile | 	NeedExportFile | ||||||
|  |  | ||||||
| 	// NeedTypes adds Types, Fset, and IllTyped. | 	// NeedTypes adds Types, Fset, and IllTyped. | ||||||
| 	NeedTypes | 	NeedTypes | ||||||
| @ -74,12 +71,25 @@ const ( | |||||||
| 	// NeedTypesSizes adds TypesSizes. | 	// NeedTypesSizes adds TypesSizes. | ||||||
| 	NeedTypesSizes | 	NeedTypesSizes | ||||||
|  |  | ||||||
|  | 	// needInternalDepsErrors adds the internal deps errors field for use by gopls. | ||||||
|  | 	needInternalDepsErrors | ||||||
|  |  | ||||||
|  | 	// needInternalForTest adds the internal forTest field. | ||||||
|  | 	// Tests must also be set on the context for this field to be populated. | ||||||
|  | 	needInternalForTest | ||||||
|  |  | ||||||
| 	// typecheckCgo enables full support for type checking cgo. Requires Go 1.15+. | 	// typecheckCgo enables full support for type checking cgo. Requires Go 1.15+. | ||||||
| 	// Modifies CompiledGoFiles and Types, and has no effect on its own. | 	// Modifies CompiledGoFiles and Types, and has no effect on its own. | ||||||
| 	typecheckCgo | 	typecheckCgo | ||||||
|  |  | ||||||
| 	// NeedModule adds Module. | 	// NeedModule adds Module. | ||||||
| 	NeedModule | 	NeedModule | ||||||
|  |  | ||||||
|  | 	// NeedEmbedFiles adds EmbedFiles. | ||||||
|  | 	NeedEmbedFiles | ||||||
|  |  | ||||||
|  | 	// NeedEmbedPatterns adds EmbedPatterns. | ||||||
|  | 	NeedEmbedPatterns | ||||||
| ) | ) | ||||||
|  |  | ||||||
| const ( | const ( | ||||||
| @ -102,6 +112,9 @@ const ( | |||||||
| 	// Deprecated: LoadAllSyntax exists for historical compatibility | 	// Deprecated: LoadAllSyntax exists for historical compatibility | ||||||
| 	// and should not be used. Please directly specify the needed fields using the Need values. | 	// and should not be used. Please directly specify the needed fields using the Need values. | ||||||
| 	LoadAllSyntax = LoadSyntax | NeedDeps | 	LoadAllSyntax = LoadSyntax | NeedDeps | ||||||
|  |  | ||||||
|  | 	// Deprecated: NeedExportsFile is a historical misspelling of NeedExportFile. | ||||||
|  | 	NeedExportsFile = NeedExportFile | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // A Config specifies details about how packages should be loaded. | // A Config specifies details about how packages should be loaded. | ||||||
| @ -296,6 +309,14 @@ type Package struct { | |||||||
| 	// including assembly, C, C++, Fortran, Objective-C, SWIG, and so on. | 	// including assembly, C, C++, Fortran, Objective-C, SWIG, and so on. | ||||||
| 	OtherFiles []string | 	OtherFiles []string | ||||||
|  |  | ||||||
|  | 	// EmbedFiles lists the absolute file paths of the package's files | ||||||
|  | 	// embedded with go:embed. | ||||||
|  | 	EmbedFiles []string | ||||||
|  |  | ||||||
|  | 	// EmbedPatterns lists the absolute file patterns of the package's | ||||||
|  | 	// files embedded with go:embed. | ||||||
|  | 	EmbedPatterns []string | ||||||
|  |  | ||||||
| 	// IgnoredFiles lists source files that are not part of the package | 	// IgnoredFiles lists source files that are not part of the package | ||||||
| 	// using the current build configuration but that might be part of | 	// using the current build configuration but that might be part of | ||||||
| 	// the package using other build configurations. | 	// the package using other build configurations. | ||||||
| @ -389,6 +410,8 @@ func init() { | |||||||
| 		config.(*Config).modFlag = value | 		config.(*Config).modFlag = value | ||||||
| 	} | 	} | ||||||
| 	packagesinternal.TypecheckCgo = int(typecheckCgo) | 	packagesinternal.TypecheckCgo = int(typecheckCgo) | ||||||
|  | 	packagesinternal.DepsErrors = int(needInternalDepsErrors) | ||||||
|  | 	packagesinternal.ForTest = int(needInternalForTest) | ||||||
| } | } | ||||||
|  |  | ||||||
| // An Error describes a problem with a package's metadata, syntax, or types. | // An Error describes a problem with a package's metadata, syntax, or types. | ||||||
| @ -431,6 +454,8 @@ type flatPackage struct { | |||||||
| 	GoFiles         []string          `json:",omitempty"` | 	GoFiles         []string          `json:",omitempty"` | ||||||
| 	CompiledGoFiles []string          `json:",omitempty"` | 	CompiledGoFiles []string          `json:",omitempty"` | ||||||
| 	OtherFiles      []string          `json:",omitempty"` | 	OtherFiles      []string          `json:",omitempty"` | ||||||
|  | 	EmbedFiles      []string          `json:",omitempty"` | ||||||
|  | 	EmbedPatterns   []string          `json:",omitempty"` | ||||||
| 	IgnoredFiles    []string          `json:",omitempty"` | 	IgnoredFiles    []string          `json:",omitempty"` | ||||||
| 	ExportFile      string            `json:",omitempty"` | 	ExportFile      string            `json:",omitempty"` | ||||||
| 	Imports         map[string]string `json:",omitempty"` | 	Imports         map[string]string `json:",omitempty"` | ||||||
| @ -454,6 +479,8 @@ func (p *Package) MarshalJSON() ([]byte, error) { | |||||||
| 		GoFiles:         p.GoFiles, | 		GoFiles:         p.GoFiles, | ||||||
| 		CompiledGoFiles: p.CompiledGoFiles, | 		CompiledGoFiles: p.CompiledGoFiles, | ||||||
| 		OtherFiles:      p.OtherFiles, | 		OtherFiles:      p.OtherFiles, | ||||||
|  | 		EmbedFiles:      p.EmbedFiles, | ||||||
|  | 		EmbedPatterns:   p.EmbedPatterns, | ||||||
| 		IgnoredFiles:    p.IgnoredFiles, | 		IgnoredFiles:    p.IgnoredFiles, | ||||||
| 		ExportFile:      p.ExportFile, | 		ExportFile:      p.ExportFile, | ||||||
| 	} | 	} | ||||||
| @ -481,6 +508,8 @@ func (p *Package) UnmarshalJSON(b []byte) error { | |||||||
| 		GoFiles:         flat.GoFiles, | 		GoFiles:         flat.GoFiles, | ||||||
| 		CompiledGoFiles: flat.CompiledGoFiles, | 		CompiledGoFiles: flat.CompiledGoFiles, | ||||||
| 		OtherFiles:      flat.OtherFiles, | 		OtherFiles:      flat.OtherFiles, | ||||||
|  | 		EmbedFiles:      flat.EmbedFiles, | ||||||
|  | 		EmbedPatterns:   flat.EmbedPatterns, | ||||||
| 		ExportFile:      flat.ExportFile, | 		ExportFile:      flat.ExportFile, | ||||||
| 	} | 	} | ||||||
| 	if len(flat.Imports) > 0 { | 	if len(flat.Imports) > 0 { | ||||||
| @ -614,7 +643,7 @@ func (ld *loader) refine(roots []string, list ...*Package) ([]*Package, error) { | |||||||
| 		needsrc := ((ld.Mode&(NeedSyntax|NeedTypesInfo) != 0 && (rootIndex >= 0 || ld.Mode&NeedDeps != 0)) || | 		needsrc := ((ld.Mode&(NeedSyntax|NeedTypesInfo) != 0 && (rootIndex >= 0 || ld.Mode&NeedDeps != 0)) || | ||||||
| 			// ... or if we need types and the exportData is invalid. We fall back to (incompletely) | 			// ... or if we need types and the exportData is invalid. We fall back to (incompletely) | ||||||
| 			// typechecking packages from source if they fail to compile. | 			// typechecking packages from source if they fail to compile. | ||||||
| 			(ld.Mode&NeedTypes|NeedTypesInfo != 0 && exportDataInvalid)) && pkg.PkgPath != "unsafe" | 			(ld.Mode&(NeedTypes|NeedTypesInfo) != 0 && exportDataInvalid)) && pkg.PkgPath != "unsafe" | ||||||
| 		lpkg := &loaderPackage{ | 		lpkg := &loaderPackage{ | ||||||
| 			Package:   pkg, | 			Package:   pkg, | ||||||
| 			needtypes: needtypes, | 			needtypes: needtypes, | ||||||
| @ -752,13 +781,19 @@ func (ld *loader) refine(roots []string, list ...*Package) ([]*Package, error) { | |||||||
| 			ld.pkgs[i].OtherFiles = nil | 			ld.pkgs[i].OtherFiles = nil | ||||||
| 			ld.pkgs[i].IgnoredFiles = nil | 			ld.pkgs[i].IgnoredFiles = nil | ||||||
| 		} | 		} | ||||||
|  | 		if ld.requestedMode&NeedEmbedFiles == 0 { | ||||||
|  | 			ld.pkgs[i].EmbedFiles = nil | ||||||
|  | 		} | ||||||
|  | 		if ld.requestedMode&NeedEmbedPatterns == 0 { | ||||||
|  | 			ld.pkgs[i].EmbedPatterns = nil | ||||||
|  | 		} | ||||||
| 		if ld.requestedMode&NeedCompiledGoFiles == 0 { | 		if ld.requestedMode&NeedCompiledGoFiles == 0 { | ||||||
| 			ld.pkgs[i].CompiledGoFiles = nil | 			ld.pkgs[i].CompiledGoFiles = nil | ||||||
| 		} | 		} | ||||||
| 		if ld.requestedMode&NeedImports == 0 { | 		if ld.requestedMode&NeedImports == 0 { | ||||||
| 			ld.pkgs[i].Imports = nil | 			ld.pkgs[i].Imports = nil | ||||||
| 		} | 		} | ||||||
| 		if ld.requestedMode&NeedExportsFile == 0 { | 		if ld.requestedMode&NeedExportFile == 0 { | ||||||
| 			ld.pkgs[i].ExportFile = "" | 			ld.pkgs[i].ExportFile = "" | ||||||
| 		} | 		} | ||||||
| 		if ld.requestedMode&NeedTypes == 0 { | 		if ld.requestedMode&NeedTypes == 0 { | ||||||
| @ -1053,7 +1088,6 @@ func (ld *loader) parseFile(filename string) (*ast.File, error) { | |||||||
| // | // | ||||||
| // Because files are scanned in parallel, the token.Pos | // Because files are scanned in parallel, the token.Pos | ||||||
| // positions of the resulting ast.Files are not ordered. | // positions of the resulting ast.Files are not ordered. | ||||||
| // |  | ||||||
| func (ld *loader) parseFiles(filenames []string) ([]*ast.File, []error) { | func (ld *loader) parseFiles(filenames []string) ([]*ast.File, []error) { | ||||||
| 	var wg sync.WaitGroup | 	var wg sync.WaitGroup | ||||||
| 	n := len(filenames) | 	n := len(filenames) | ||||||
| @ -1097,7 +1131,6 @@ func (ld *loader) parseFiles(filenames []string) ([]*ast.File, []error) { | |||||||
|  |  | ||||||
| // sameFile returns true if x and y have the same basename and denote | // sameFile returns true if x and y have the same basename and denote | ||||||
| // the same file. | // the same file. | ||||||
| // |  | ||||||
| func sameFile(x, y string) bool { | func sameFile(x, y string) bool { | ||||||
| 	if x == y { | 	if x == y { | ||||||
| 		// It could be the case that y doesn't exist. | 		// It could be the case that y doesn't exist. | ||||||
| @ -1210,8 +1243,13 @@ func (ld *loader) loadFromExportData(lpkg *loaderPackage) (*types.Package, error | |||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, fmt.Errorf("reading %s: %v", lpkg.ExportFile, err) | 		return nil, fmt.Errorf("reading %s: %v", lpkg.ExportFile, err) | ||||||
| 	} | 	} | ||||||
|  | 	if _, ok := view["go.shape"]; ok { | ||||||
|  | 		// Account for the pseudopackage "go.shape" that gets | ||||||
|  | 		// created by generic code. | ||||||
|  | 		viewLen++ | ||||||
|  | 	} | ||||||
| 	if viewLen != len(view) { | 	if viewLen != len(view) { | ||||||
| 		log.Fatalf("Unexpected package creation during export data loading") | 		log.Panicf("golang.org/x/tools/go/packages: unexpected new packages during load of %s", lpkg.PkgPath) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	lpkg.Types = tpkg | 	lpkg.Types = tpkg | ||||||
| @ -1222,17 +1260,8 @@ func (ld *loader) loadFromExportData(lpkg *loaderPackage) (*types.Package, error | |||||||
|  |  | ||||||
| // impliedLoadMode returns loadMode with its dependencies. | // impliedLoadMode returns loadMode with its dependencies. | ||||||
| func impliedLoadMode(loadMode LoadMode) LoadMode { | func impliedLoadMode(loadMode LoadMode) LoadMode { | ||||||
| 	if loadMode&NeedTypesInfo != 0 && loadMode&NeedImports == 0 { | 	if loadMode&(NeedDeps|NeedTypes|NeedTypesInfo) != 0 { | ||||||
| 		// If NeedTypesInfo, go/packages needs to do typechecking itself so it can | 		// All these things require knowing the import graph. | ||||||
| 		// associate type info with the AST. To do so, we need the export data |  | ||||||
| 		// for dependencies, which means we need to ask for the direct dependencies. |  | ||||||
| 		// NeedImports is used to ask for the direct dependencies. |  | ||||||
| 		loadMode |= NeedImports |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if loadMode&NeedDeps != 0 && loadMode&NeedImports == 0 { |  | ||||||
| 		// With NeedDeps we need to load at least direct dependencies. |  | ||||||
| 		// NeedImports is used to ask for the direct dependencies. |  | ||||||
| 		loadMode |= NeedImports | 		loadMode |= NeedImports | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @ -1240,5 +1269,5 @@ func impliedLoadMode(loadMode LoadMode) LoadMode { | |||||||
| } | } | ||||||
|  |  | ||||||
| func usesExportData(cfg *Config) bool { | func usesExportData(cfg *Config) bool { | ||||||
| 	return cfg.Mode&NeedExportsFile != 0 || cfg.Mode&NeedTypes != 0 && cfg.Mode&NeedDeps == 0 | 	return cfg.Mode&NeedExportFile != 0 || cfg.Mode&NeedTypes != 0 && cfg.Mode&NeedDeps == 0 | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										22
									
								
								vendor/golang.org/x/tools/internal/gocommand/invoke.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/golang.org/x/tools/internal/gocommand/invoke.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -9,7 +9,6 @@ import ( | |||||||
| 	"bytes" | 	"bytes" | ||||||
| 	"context" | 	"context" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	exec "golang.org/x/sys/execabs" |  | ||||||
| 	"io" | 	"io" | ||||||
| 	"os" | 	"os" | ||||||
| 	"regexp" | 	"regexp" | ||||||
| @ -18,6 +17,8 @@ import ( | |||||||
| 	"sync" | 	"sync" | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
|  | 	exec "golang.org/x/sys/execabs" | ||||||
|  |  | ||||||
| 	"golang.org/x/tools/internal/event" | 	"golang.org/x/tools/internal/event" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @ -131,9 +132,16 @@ type Invocation struct { | |||||||
| 	Verb       string | 	Verb       string | ||||||
| 	Args       []string | 	Args       []string | ||||||
| 	BuildFlags []string | 	BuildFlags []string | ||||||
| 	ModFlag    string |  | ||||||
| 	ModFile    string | 	// If ModFlag is set, the go command is invoked with -mod=ModFlag. | ||||||
| 	Overlay    string | 	ModFlag string | ||||||
|  |  | ||||||
|  | 	// If ModFile is set, the go command is invoked with -modfile=ModFile. | ||||||
|  | 	ModFile string | ||||||
|  |  | ||||||
|  | 	// If Overlay is set, the go command is invoked with -overlay=Overlay. | ||||||
|  | 	Overlay string | ||||||
|  |  | ||||||
| 	// If CleanEnv is set, the invocation will run only with the environment | 	// If CleanEnv is set, the invocation will run only with the environment | ||||||
| 	// in Env, not starting with os.Environ. | 	// in Env, not starting with os.Environ. | ||||||
| 	CleanEnv   bool | 	CleanEnv   bool | ||||||
| @ -256,8 +264,10 @@ func cmdDebugStr(cmd *exec.Cmd) string { | |||||||
| 	env := make(map[string]string) | 	env := make(map[string]string) | ||||||
| 	for _, kv := range cmd.Env { | 	for _, kv := range cmd.Env { | ||||||
| 		split := strings.SplitN(kv, "=", 2) | 		split := strings.SplitN(kv, "=", 2) | ||||||
| 		k, v := split[0], split[1] | 		if len(split) == 2 { | ||||||
| 		env[k] = v | 			k, v := split[0], split[1] | ||||||
|  | 			env[k] = v | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	var args []string | 	var args []string | ||||||
|  | |||||||
							
								
								
									
										22
									
								
								vendor/golang.org/x/tools/internal/gocommand/vendor.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/golang.org/x/tools/internal/gocommand/vendor.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -38,10 +38,10 @@ var modFlagRegexp = regexp.MustCompile(`-mod[ =](\w+)`) | |||||||
| // with the supplied context.Context and Invocation. The Invocation can contain pre-defined fields, | // with the supplied context.Context and Invocation. The Invocation can contain pre-defined fields, | ||||||
| // of which only Verb and Args are modified to run the appropriate Go command. | // of which only Verb and Args are modified to run the appropriate Go command. | ||||||
| // Inspired by setDefaultBuildMod in modload/init.go | // Inspired by setDefaultBuildMod in modload/init.go | ||||||
| func VendorEnabled(ctx context.Context, inv Invocation, r *Runner) (*ModuleJSON, bool, error) { | func VendorEnabled(ctx context.Context, inv Invocation, r *Runner) (bool, *ModuleJSON, error) { | ||||||
| 	mainMod, go114, err := getMainModuleAnd114(ctx, inv, r) | 	mainMod, go114, err := getMainModuleAnd114(ctx, inv, r) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, false, err | 		return false, nil, err | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// We check the GOFLAGS to see if there is anything overridden or not. | 	// We check the GOFLAGS to see if there is anything overridden or not. | ||||||
| @ -49,7 +49,7 @@ func VendorEnabled(ctx context.Context, inv Invocation, r *Runner) (*ModuleJSON, | |||||||
| 	inv.Args = []string{"GOFLAGS"} | 	inv.Args = []string{"GOFLAGS"} | ||||||
| 	stdout, err := r.Run(ctx, inv) | 	stdout, err := r.Run(ctx, inv) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, false, err | 		return false, nil, err | ||||||
| 	} | 	} | ||||||
| 	goflags := string(bytes.TrimSpace(stdout.Bytes())) | 	goflags := string(bytes.TrimSpace(stdout.Bytes())) | ||||||
| 	matches := modFlagRegexp.FindStringSubmatch(goflags) | 	matches := modFlagRegexp.FindStringSubmatch(goflags) | ||||||
| @ -57,25 +57,27 @@ func VendorEnabled(ctx context.Context, inv Invocation, r *Runner) (*ModuleJSON, | |||||||
| 	if len(matches) != 0 { | 	if len(matches) != 0 { | ||||||
| 		modFlag = matches[1] | 		modFlag = matches[1] | ||||||
| 	} | 	} | ||||||
| 	if modFlag != "" { | 	// Don't override an explicit '-mod=' argument. | ||||||
| 		// Don't override an explicit '-mod=' argument. | 	if modFlag == "vendor" { | ||||||
| 		return mainMod, modFlag == "vendor", nil | 		return true, mainMod, nil | ||||||
|  | 	} else if modFlag != "" { | ||||||
|  | 		return false, nil, nil | ||||||
| 	} | 	} | ||||||
| 	if mainMod == nil || !go114 { | 	if mainMod == nil || !go114 { | ||||||
| 		return mainMod, false, nil | 		return false, nil, nil | ||||||
| 	} | 	} | ||||||
| 	// Check 1.14's automatic vendor mode. | 	// Check 1.14's automatic vendor mode. | ||||||
| 	if fi, err := os.Stat(filepath.Join(mainMod.Dir, "vendor")); err == nil && fi.IsDir() { | 	if fi, err := os.Stat(filepath.Join(mainMod.Dir, "vendor")); err == nil && fi.IsDir() { | ||||||
| 		if mainMod.GoVersion != "" && semver.Compare("v"+mainMod.GoVersion, "v1.14") >= 0 { | 		if mainMod.GoVersion != "" && semver.Compare("v"+mainMod.GoVersion, "v1.14") >= 0 { | ||||||
| 			// The Go version is at least 1.14, and a vendor directory exists. | 			// The Go version is at least 1.14, and a vendor directory exists. | ||||||
| 			// Set -mod=vendor by default. | 			// Set -mod=vendor by default. | ||||||
| 			return mainMod, true, nil | 			return true, mainMod, nil | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	return mainMod, false, nil | 	return false, nil, nil | ||||||
| } | } | ||||||
|  |  | ||||||
| // getMainModuleAnd114 gets the main module's information and whether the | // getMainModuleAnd114 gets one of the main modules' information and whether the | ||||||
| // go command in use is 1.14+. This is the information needed to figure out | // go command in use is 1.14+. This is the information needed to figure out | ||||||
| // if vendoring should be enabled. | // if vendoring should be enabled. | ||||||
| func getMainModuleAnd114(ctx context.Context, inv Invocation, r *Runner) (*ModuleJSON, bool, error) { | func getMainModuleAnd114(ctx context.Context, inv Invocation, r *Runner) (*ModuleJSON, bool, error) { | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/tools/internal/packagesinternal/packages.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/tools/internal/packagesinternal/packages.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -23,6 +23,8 @@ var GetGoCmdRunner = func(config interface{}) *gocommand.Runner { return nil } | |||||||
| var SetGoCmdRunner = func(config interface{}, runner *gocommand.Runner) {} | var SetGoCmdRunner = func(config interface{}, runner *gocommand.Runner) {} | ||||||
|  |  | ||||||
| var TypecheckCgo int | var TypecheckCgo int | ||||||
|  | var DepsErrors int // must be set as a LoadMode to call GetDepsErrors | ||||||
|  | var ForTest int    // must be set as a LoadMode to call GetForTest | ||||||
|  |  | ||||||
| var SetModFlag = func(config interface{}, value string) {} | var SetModFlag = func(config interface{}, value string) {} | ||||||
| var SetModFile = func(config interface{}, value string) {} | var SetModFile = func(config interface{}, value string) {} | ||||||
|  | |||||||
							
								
								
									
										108
									
								
								vendor/golang.org/x/tools/internal/typeparams/common.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										108
									
								
								vendor/golang.org/x/tools/internal/typeparams/common.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -16,11 +16,10 @@ | |||||||
| // Additionally, this package contains common utilities for working with the | // Additionally, this package contains common utilities for working with the | ||||||
| // new generic constructs, to supplement the standard library APIs. Notably, | // new generic constructs, to supplement the standard library APIs. Notably, | ||||||
| // the StructuralTerms API computes a minimal representation of the structural | // the StructuralTerms API computes a minimal representation of the structural | ||||||
| // restrictions on a type parameter. In the future, this API may be available | // restrictions on a type parameter. | ||||||
| // from go/types. |  | ||||||
| // | // | ||||||
| // See the example/README.md for a more detailed guide on how to update tools | // An external version of these APIs is available in the | ||||||
| // to support generics. | // golang.org/x/exp/typeparams module. | ||||||
| package typeparams | package typeparams | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| @ -77,3 +76,104 @@ func IsTypeParam(t types.Type) bool { | |||||||
| 	_, ok := t.(*TypeParam) | 	_, ok := t.(*TypeParam) | ||||||
| 	return ok | 	return ok | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // OriginMethod returns the origin method associated with the method fn. | ||||||
|  | // For methods on a non-generic receiver base type, this is just | ||||||
|  | // fn. However, for methods with a generic receiver, OriginMethod returns the | ||||||
|  | // corresponding method in the method set of the origin type. | ||||||
|  | // | ||||||
|  | // As a special case, if fn is not a method (has no receiver), OriginMethod | ||||||
|  | // returns fn. | ||||||
|  | func OriginMethod(fn *types.Func) *types.Func { | ||||||
|  | 	recv := fn.Type().(*types.Signature).Recv() | ||||||
|  | 	if recv == nil { | ||||||
|  |  | ||||||
|  | 		return fn | ||||||
|  | 	} | ||||||
|  | 	base := recv.Type() | ||||||
|  | 	p, isPtr := base.(*types.Pointer) | ||||||
|  | 	if isPtr { | ||||||
|  | 		base = p.Elem() | ||||||
|  | 	} | ||||||
|  | 	named, isNamed := base.(*types.Named) | ||||||
|  | 	if !isNamed { | ||||||
|  | 		// Receiver is a *types.Interface. | ||||||
|  | 		return fn | ||||||
|  | 	} | ||||||
|  | 	if ForNamed(named).Len() == 0 { | ||||||
|  | 		// Receiver base has no type parameters, so we can avoid the lookup below. | ||||||
|  | 		return fn | ||||||
|  | 	} | ||||||
|  | 	orig := NamedTypeOrigin(named) | ||||||
|  | 	gfn, _, _ := types.LookupFieldOrMethod(orig, true, fn.Pkg(), fn.Name()) | ||||||
|  | 	return gfn.(*types.Func) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // GenericAssignableTo is a generalization of types.AssignableTo that | ||||||
|  | // implements the following rule for uninstantiated generic types: | ||||||
|  | // | ||||||
|  | // If V and T are generic named types, then V is considered assignable to T if, | ||||||
|  | // for every possible instantation of V[A_1, ..., A_N], the instantiation | ||||||
|  | // T[A_1, ..., A_N] is valid and V[A_1, ..., A_N] implements T[A_1, ..., A_N]. | ||||||
|  | // | ||||||
|  | // If T has structural constraints, they must be satisfied by V. | ||||||
|  | // | ||||||
|  | // For example, consider the following type declarations: | ||||||
|  | // | ||||||
|  | //	type Interface[T any] interface { | ||||||
|  | //		Accept(T) | ||||||
|  | //	} | ||||||
|  | // | ||||||
|  | //	type Container[T any] struct { | ||||||
|  | //		Element T | ||||||
|  | //	} | ||||||
|  | // | ||||||
|  | //	func (c Container[T]) Accept(t T) { c.Element = t } | ||||||
|  | // | ||||||
|  | // In this case, GenericAssignableTo reports that instantiations of Container | ||||||
|  | // are assignable to the corresponding instantiation of Interface. | ||||||
|  | func GenericAssignableTo(ctxt *Context, V, T types.Type) bool { | ||||||
|  | 	// If V and T are not both named, or do not have matching non-empty type | ||||||
|  | 	// parameter lists, fall back on types.AssignableTo. | ||||||
|  |  | ||||||
|  | 	VN, Vnamed := V.(*types.Named) | ||||||
|  | 	TN, Tnamed := T.(*types.Named) | ||||||
|  | 	if !Vnamed || !Tnamed { | ||||||
|  | 		return types.AssignableTo(V, T) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	vtparams := ForNamed(VN) | ||||||
|  | 	ttparams := ForNamed(TN) | ||||||
|  | 	if vtparams.Len() == 0 || vtparams.Len() != ttparams.Len() || NamedTypeArgs(VN).Len() != 0 || NamedTypeArgs(TN).Len() != 0 { | ||||||
|  | 		return types.AssignableTo(V, T) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// V and T have the same (non-zero) number of type params. Instantiate both | ||||||
|  | 	// with the type parameters of V. This must always succeed for V, and will | ||||||
|  | 	// succeed for T if and only if the type set of each type parameter of V is a | ||||||
|  | 	// subset of the type set of the corresponding type parameter of T, meaning | ||||||
|  | 	// that every instantiation of V corresponds to a valid instantiation of T. | ||||||
|  |  | ||||||
|  | 	// Minor optimization: ensure we share a context across the two | ||||||
|  | 	// instantiations below. | ||||||
|  | 	if ctxt == nil { | ||||||
|  | 		ctxt = NewContext() | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	var targs []types.Type | ||||||
|  | 	for i := 0; i < vtparams.Len(); i++ { | ||||||
|  | 		targs = append(targs, vtparams.At(i)) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	vinst, err := Instantiate(ctxt, V, targs, true) | ||||||
|  | 	if err != nil { | ||||||
|  | 		panic("type parameters should satisfy their own constraints") | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	tinst, err := Instantiate(ctxt, T, targs, true) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return false | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return types.AssignableTo(vinst, tinst) | ||||||
|  | } | ||||||
|  | |||||||
							
								
								
									
										122
									
								
								vendor/golang.org/x/tools/internal/typeparams/coretype.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								vendor/golang.org/x/tools/internal/typeparams/coretype.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,122 @@ | |||||||
|  | // Copyright 2022 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 typeparams | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"go/types" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // CoreType returns the core type of T or nil if T does not have a core type. | ||||||
|  | // | ||||||
|  | // See https://go.dev/ref/spec#Core_types for the definition of a core type. | ||||||
|  | func CoreType(T types.Type) types.Type { | ||||||
|  | 	U := T.Underlying() | ||||||
|  | 	if _, ok := U.(*types.Interface); !ok { | ||||||
|  | 		return U // for non-interface types, | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	terms, err := _NormalTerms(U) | ||||||
|  | 	if len(terms) == 0 || err != nil { | ||||||
|  | 		// len(terms) -> empty type set of interface. | ||||||
|  | 		// err != nil => U is invalid, exceeds complexity bounds, or has an empty type set. | ||||||
|  | 		return nil // no core type. | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	U = terms[0].Type().Underlying() | ||||||
|  | 	var identical int // i in [0,identical) => Identical(U, terms[i].Type().Underlying()) | ||||||
|  | 	for identical = 1; identical < len(terms); identical++ { | ||||||
|  | 		if !types.Identical(U, terms[identical].Type().Underlying()) { | ||||||
|  | 			break | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if identical == len(terms) { | ||||||
|  | 		// https://go.dev/ref/spec#Core_types | ||||||
|  | 		// "There is a single type U which is the underlying type of all types in the type set of T" | ||||||
|  | 		return U | ||||||
|  | 	} | ||||||
|  | 	ch, ok := U.(*types.Chan) | ||||||
|  | 	if !ok { | ||||||
|  | 		return nil // no core type as identical < len(terms) and U is not a channel. | ||||||
|  | 	} | ||||||
|  | 	// https://go.dev/ref/spec#Core_types | ||||||
|  | 	// "the type chan E if T contains only bidirectional channels, or the type chan<- E or | ||||||
|  | 	// <-chan E depending on the direction of the directional channels present." | ||||||
|  | 	for chans := identical; chans < len(terms); chans++ { | ||||||
|  | 		curr, ok := terms[chans].Type().Underlying().(*types.Chan) | ||||||
|  | 		if !ok { | ||||||
|  | 			return nil | ||||||
|  | 		} | ||||||
|  | 		if !types.Identical(ch.Elem(), curr.Elem()) { | ||||||
|  | 			return nil // channel elements are not identical. | ||||||
|  | 		} | ||||||
|  | 		if ch.Dir() == types.SendRecv { | ||||||
|  | 			// ch is bidirectional. We can safely always use curr's direction. | ||||||
|  | 			ch = curr | ||||||
|  | 		} else if curr.Dir() != types.SendRecv && ch.Dir() != curr.Dir() { | ||||||
|  | 			// ch and curr are not bidirectional and not the same direction. | ||||||
|  | 			return nil | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return ch | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // _NormalTerms returns a slice of terms representing the normalized structural | ||||||
|  | // type restrictions of a type, if any. | ||||||
|  | // | ||||||
|  | // For all types other than *types.TypeParam, *types.Interface, and | ||||||
|  | // *types.Union, this is just a single term with Tilde() == false and | ||||||
|  | // Type() == typ. For *types.TypeParam, *types.Interface, and *types.Union, see | ||||||
|  | // below. | ||||||
|  | // | ||||||
|  | // Structural type restrictions of a type parameter are created via | ||||||
|  | // non-interface types embedded in its constraint interface (directly, or via a | ||||||
|  | // chain of interface embeddings). For example, in the declaration type | ||||||
|  | // T[P interface{~int; m()}] int the structural restriction of the type | ||||||
|  | // parameter P is ~int. | ||||||
|  | // | ||||||
|  | // With interface embedding and unions, the specification of structural type | ||||||
|  | // restrictions may be arbitrarily complex. For example, consider the | ||||||
|  | // following: | ||||||
|  | // | ||||||
|  | //  type A interface{ ~string|~[]byte } | ||||||
|  | // | ||||||
|  | //  type B interface{ int|string } | ||||||
|  | // | ||||||
|  | //  type C interface { ~string|~int } | ||||||
|  | // | ||||||
|  | //  type T[P interface{ A|B; C }] int | ||||||
|  | // | ||||||
|  | // In this example, the structural type restriction of P is ~string|int: A|B | ||||||
|  | // expands to ~string|~[]byte|int|string, which reduces to ~string|~[]byte|int, | ||||||
|  | // which when intersected with C (~string|~int) yields ~string|int. | ||||||
|  | // | ||||||
|  | // _NormalTerms computes these expansions and reductions, producing a | ||||||
|  | // "normalized" form of the embeddings. A structural restriction is normalized | ||||||
|  | // if it is a single union containing no interface terms, and is minimal in the | ||||||
|  | // sense that removing any term changes the set of types satisfying the | ||||||
|  | // constraint. It is left as a proof for the reader that, modulo sorting, there | ||||||
|  | // is exactly one such normalized form. | ||||||
|  | // | ||||||
|  | // Because the minimal representation always takes this form, _NormalTerms | ||||||
|  | // returns a slice of tilde terms corresponding to the terms of the union in | ||||||
|  | // the normalized structural restriction. An error is returned if the type is | ||||||
|  | // invalid, exceeds complexity bounds, or has an empty type set. In the latter | ||||||
|  | // case, _NormalTerms returns ErrEmptyTypeSet. | ||||||
|  | // | ||||||
|  | // _NormalTerms makes no guarantees about the order of terms, except that it | ||||||
|  | // is deterministic. | ||||||
|  | func _NormalTerms(typ types.Type) ([]*Term, error) { | ||||||
|  | 	switch typ := typ.(type) { | ||||||
|  | 	case *TypeParam: | ||||||
|  | 		return StructuralTerms(typ) | ||||||
|  | 	case *Union: | ||||||
|  | 		return UnionTermSet(typ) | ||||||
|  | 	case *types.Interface: | ||||||
|  | 		return InterfaceTermSet(typ) | ||||||
|  | 	default: | ||||||
|  | 		return []*Term{NewTerm(false, typ)}, nil | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										12
									
								
								vendor/golang.org/x/tools/internal/typeparams/normalize.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/golang.org/x/tools/internal/typeparams/normalize.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -24,20 +24,22 @@ var ErrEmptyTypeSet = errors.New("empty type set") | |||||||
| // Structural type restrictions of a type parameter are created via | // Structural type restrictions of a type parameter are created via | ||||||
| // non-interface types embedded in its constraint interface (directly, or via a | // non-interface types embedded in its constraint interface (directly, or via a | ||||||
| // chain of interface embeddings). For example, in the declaration | // chain of interface embeddings). For example, in the declaration | ||||||
| //  type T[P interface{~int; m()}] int | // | ||||||
|  | //	type T[P interface{~int; m()}] int | ||||||
|  | // | ||||||
| // the structural restriction of the type parameter P is ~int. | // the structural restriction of the type parameter P is ~int. | ||||||
| // | // | ||||||
| // With interface embedding and unions, the specification of structural type | // With interface embedding and unions, the specification of structural type | ||||||
| // restrictions may be arbitrarily complex. For example, consider the | // restrictions may be arbitrarily complex. For example, consider the | ||||||
| // following: | // following: | ||||||
| // | // | ||||||
| //  type A interface{ ~string|~[]byte } | //	type A interface{ ~string|~[]byte } | ||||||
| // | // | ||||||
| //  type B interface{ int|string } | //	type B interface{ int|string } | ||||||
| // | // | ||||||
| //  type C interface { ~string|~int } | //	type C interface { ~string|~int } | ||||||
| // | // | ||||||
| //  type T[P interface{ A|B; C }] int | //	type T[P interface{ A|B; C }] int | ||||||
| // | // | ||||||
| // In this example, the structural type restriction of P is ~string|int: A|B | // In this example, the structural type restriction of P is ~string|int: A|B | ||||||
| // expands to ~string|~[]byte|int|string, which reduces to ~string|~[]byte|int, | // expands to ~string|~[]byte|int|string, which reduces to ~string|~[]byte|int, | ||||||
|  | |||||||
							
								
								
									
										9
									
								
								vendor/golang.org/x/tools/internal/typeparams/termlist.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/golang.org/x/tools/internal/typeparams/termlist.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -97,15 +97,6 @@ func (xl termlist) norm() termlist { | |||||||
| 	return rl | 	return rl | ||||||
| } | } | ||||||
|  |  | ||||||
| // If the type set represented by xl is specified by a single (non-𝓤) term, |  | ||||||
| // structuralType returns that type. Otherwise it returns nil. |  | ||||||
| func (xl termlist) structuralType() types.Type { |  | ||||||
| 	if nl := xl.norm(); len(nl) == 1 { |  | ||||||
| 		return nl[0].typ // if nl.isAll() then typ is nil, which is ok |  | ||||||
| 	} |  | ||||||
| 	return nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // union returns the union xl ∪ yl. | // union returns the union xl ∪ yl. | ||||||
| func (xl termlist) union(yl termlist) termlist { | func (xl termlist) union(yl termlist) termlist { | ||||||
| 	return append(xl, yl...).norm() | 	return append(xl, yl...).norm() | ||||||
|  | |||||||
							
								
								
									
										5
									
								
								vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -185,6 +185,11 @@ func GetInstances(info *types.Info) map[*ast.Ident]Instance { return nil } | |||||||
| // this Go version. | // this Go version. | ||||||
| type Context struct{} | type Context struct{} | ||||||
|  |  | ||||||
|  | // NewContext returns a placeholder Context instance. | ||||||
|  | func NewContext() *Context { | ||||||
|  | 	return &Context{} | ||||||
|  | } | ||||||
|  |  | ||||||
| // Instantiate is unsupported on this Go version, and panics. | // Instantiate is unsupported on this Go version, and panics. | ||||||
| func Instantiate(ctxt *Context, typ types.Type, targs []types.Type, validate bool) (types.Type, error) { | func Instantiate(ctxt *Context, typ types.Type, targs []types.Type, validate bool) (types.Type, error) { | ||||||
| 	unsupported() | 	unsupported() | ||||||
|  | |||||||
							
								
								
									
										5
									
								
								vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -140,6 +140,11 @@ func GetInstances(info *types.Info) map[*ast.Ident]Instance { | |||||||
| // Context is an alias for types.Context. | // Context is an alias for types.Context. | ||||||
| type Context = types.Context | type Context = types.Context | ||||||
|  |  | ||||||
|  | // NewContext calls types.NewContext. | ||||||
|  | func NewContext() *Context { | ||||||
|  | 	return types.NewContext() | ||||||
|  | } | ||||||
|  |  | ||||||
| // Instantiate calls types.Instantiate. | // Instantiate calls types.Instantiate. | ||||||
| func Instantiate(ctxt *Context, typ types.Type, targs []types.Type, validate bool) (types.Type, error) { | func Instantiate(ctxt *Context, typ types.Type, targs []types.Type, validate bool) (types.Type, error) { | ||||||
| 	return types.Instantiate(ctxt, typ, targs, validate) | 	return types.Instantiate(ctxt, typ, targs, validate) | ||||||
|  | |||||||
							
								
								
									
										158
									
								
								vendor/golang.org/x/tools/internal/typesinternal/errorcode.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										158
									
								
								vendor/golang.org/x/tools/internal/typesinternal/errorcode.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1365,4 +1365,162 @@ const ( | |||||||
| 	//  	return i | 	//  	return i | ||||||
| 	//  } | 	//  } | ||||||
| 	InvalidGo | 	InvalidGo | ||||||
|  |  | ||||||
|  | 	// All codes below were added in Go 1.17. | ||||||
|  |  | ||||||
|  | 	/* decl */ | ||||||
|  |  | ||||||
|  | 	// BadDecl occurs when a declaration has invalid syntax. | ||||||
|  | 	BadDecl | ||||||
|  |  | ||||||
|  | 	// RepeatedDecl occurs when an identifier occurs more than once on the left | ||||||
|  | 	// hand side of a short variable declaration. | ||||||
|  | 	// | ||||||
|  | 	// Example: | ||||||
|  | 	//  func _() { | ||||||
|  | 	//  	x, y, y := 1, 2, 3 | ||||||
|  | 	//  } | ||||||
|  | 	RepeatedDecl | ||||||
|  |  | ||||||
|  | 	/* unsafe */ | ||||||
|  |  | ||||||
|  | 	// InvalidUnsafeAdd occurs when unsafe.Add is called with a | ||||||
|  | 	// length argument that is not of integer type. | ||||||
|  | 	// | ||||||
|  | 	// Example: | ||||||
|  | 	//  import "unsafe" | ||||||
|  | 	// | ||||||
|  | 	//  var p unsafe.Pointer | ||||||
|  | 	//  var _ = unsafe.Add(p, float64(1)) | ||||||
|  | 	InvalidUnsafeAdd | ||||||
|  |  | ||||||
|  | 	// InvalidUnsafeSlice occurs when unsafe.Slice is called with a | ||||||
|  | 	// pointer argument that is not of pointer type or a length argument | ||||||
|  | 	// that is not of integer type, negative, or out of bounds. | ||||||
|  | 	// | ||||||
|  | 	// Example: | ||||||
|  | 	//  import "unsafe" | ||||||
|  | 	// | ||||||
|  | 	//  var x int | ||||||
|  | 	//  var _ = unsafe.Slice(x, 1) | ||||||
|  | 	// | ||||||
|  | 	// Example: | ||||||
|  | 	//  import "unsafe" | ||||||
|  | 	// | ||||||
|  | 	//  var x int | ||||||
|  | 	//  var _ = unsafe.Slice(&x, float64(1)) | ||||||
|  | 	// | ||||||
|  | 	// Example: | ||||||
|  | 	//  import "unsafe" | ||||||
|  | 	// | ||||||
|  | 	//  var x int | ||||||
|  | 	//  var _ = unsafe.Slice(&x, -1) | ||||||
|  | 	// | ||||||
|  | 	// Example: | ||||||
|  | 	//  import "unsafe" | ||||||
|  | 	// | ||||||
|  | 	//  var x int | ||||||
|  | 	//  var _ = unsafe.Slice(&x, uint64(1) << 63) | ||||||
|  | 	InvalidUnsafeSlice | ||||||
|  |  | ||||||
|  | 	// All codes below were added in Go 1.18. | ||||||
|  |  | ||||||
|  | 	/* features */ | ||||||
|  |  | ||||||
|  | 	// UnsupportedFeature occurs when a language feature is used that is not | ||||||
|  | 	// supported at this Go version. | ||||||
|  | 	UnsupportedFeature | ||||||
|  |  | ||||||
|  | 	/* type params */ | ||||||
|  |  | ||||||
|  | 	// NotAGenericType occurs when a non-generic type is used where a generic | ||||||
|  | 	// type is expected: in type or function instantiation. | ||||||
|  | 	// | ||||||
|  | 	// Example: | ||||||
|  | 	//  type T int | ||||||
|  | 	// | ||||||
|  | 	//  var _ T[int] | ||||||
|  | 	NotAGenericType | ||||||
|  |  | ||||||
|  | 	// WrongTypeArgCount occurs when a type or function is instantiated with an | ||||||
|  | 	// incorrent number of type arguments, including when a generic type or | ||||||
|  | 	// function is used without instantiation. | ||||||
|  | 	// | ||||||
|  | 	// Errors inolving failed type inference are assigned other error codes. | ||||||
|  | 	// | ||||||
|  | 	// Example: | ||||||
|  | 	//  type T[p any] int | ||||||
|  | 	// | ||||||
|  | 	//  var _ T[int, string] | ||||||
|  | 	// | ||||||
|  | 	// Example: | ||||||
|  | 	//  func f[T any]() {} | ||||||
|  | 	// | ||||||
|  | 	//  var x = f | ||||||
|  | 	WrongTypeArgCount | ||||||
|  |  | ||||||
|  | 	// CannotInferTypeArgs occurs when type or function type argument inference | ||||||
|  | 	// fails to infer all type arguments. | ||||||
|  | 	// | ||||||
|  | 	// Example: | ||||||
|  | 	//  func f[T any]() {} | ||||||
|  | 	// | ||||||
|  | 	//  func _() { | ||||||
|  | 	//  	f() | ||||||
|  | 	//  } | ||||||
|  | 	// | ||||||
|  | 	// Example: | ||||||
|  | 	//   type N[P, Q any] struct{} | ||||||
|  | 	// | ||||||
|  | 	//   var _ N[int] | ||||||
|  | 	CannotInferTypeArgs | ||||||
|  |  | ||||||
|  | 	// InvalidTypeArg occurs when a type argument does not satisfy its | ||||||
|  | 	// corresponding type parameter constraints. | ||||||
|  | 	// | ||||||
|  | 	// Example: | ||||||
|  | 	//  type T[P ~int] struct{} | ||||||
|  | 	// | ||||||
|  | 	//  var _ T[string] | ||||||
|  | 	InvalidTypeArg // arguments? InferenceFailed | ||||||
|  |  | ||||||
|  | 	// InvalidInstanceCycle occurs when an invalid cycle is detected | ||||||
|  | 	// within the instantiation graph. | ||||||
|  | 	// | ||||||
|  | 	// Example: | ||||||
|  | 	//  func f[T any]() { f[*T]() } | ||||||
|  | 	InvalidInstanceCycle | ||||||
|  |  | ||||||
|  | 	// InvalidUnion occurs when an embedded union or approximation element is | ||||||
|  | 	// not valid. | ||||||
|  | 	// | ||||||
|  | 	// Example: | ||||||
|  | 	//  type _ interface { | ||||||
|  | 	//   	~int | interface{ m() } | ||||||
|  | 	//  } | ||||||
|  | 	InvalidUnion | ||||||
|  |  | ||||||
|  | 	// MisplacedConstraintIface occurs when a constraint-type interface is used | ||||||
|  | 	// outside of constraint position. | ||||||
|  | 	// | ||||||
|  | 	// Example: | ||||||
|  | 	//   type I interface { ~int } | ||||||
|  | 	// | ||||||
|  | 	//   var _ I | ||||||
|  | 	MisplacedConstraintIface | ||||||
|  |  | ||||||
|  | 	// InvalidMethodTypeParams occurs when methods have type parameters. | ||||||
|  | 	// | ||||||
|  | 	// It cannot be encountered with an AST parsed using go/parser. | ||||||
|  | 	InvalidMethodTypeParams | ||||||
|  |  | ||||||
|  | 	// MisplacedTypeParam occurs when a type parameter is used in a place where | ||||||
|  | 	// it is not permitted. | ||||||
|  | 	// | ||||||
|  | 	// Example: | ||||||
|  | 	//  type T[P any] P | ||||||
|  | 	// | ||||||
|  | 	// Example: | ||||||
|  | 	//  type T[P any] struct{ *P } | ||||||
|  | 	MisplacedTypeParam | ||||||
| ) | ) | ||||||
|  | |||||||
							
								
								
									
										18
									
								
								vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -138,11 +138,25 @@ func _() { | |||||||
| 	_ = x[UnusedResults-128] | 	_ = x[UnusedResults-128] | ||||||
| 	_ = x[InvalidDefer-129] | 	_ = x[InvalidDefer-129] | ||||||
| 	_ = x[InvalidGo-130] | 	_ = x[InvalidGo-130] | ||||||
|  | 	_ = x[BadDecl-131] | ||||||
|  | 	_ = x[RepeatedDecl-132] | ||||||
|  | 	_ = x[InvalidUnsafeAdd-133] | ||||||
|  | 	_ = x[InvalidUnsafeSlice-134] | ||||||
|  | 	_ = x[UnsupportedFeature-135] | ||||||
|  | 	_ = x[NotAGenericType-136] | ||||||
|  | 	_ = x[WrongTypeArgCount-137] | ||||||
|  | 	_ = x[CannotInferTypeArgs-138] | ||||||
|  | 	_ = x[InvalidTypeArg-139] | ||||||
|  | 	_ = x[InvalidInstanceCycle-140] | ||||||
|  | 	_ = x[InvalidUnion-141] | ||||||
|  | 	_ = x[MisplacedConstraintIface-142] | ||||||
|  | 	_ = x[InvalidMethodTypeParams-143] | ||||||
|  | 	_ = x[MisplacedTypeParam-144] | ||||||
| } | } | ||||||
|  |  | ||||||
| const _ErrorCode_name = "TestBlankPkgNameMismatchedPkgNameInvalidPkgUseBadImportPathBrokenImportImportCRenamedUnusedImportInvalidInitCycleDuplicateDeclInvalidDeclCycleInvalidTypeCycleInvalidConstInitInvalidConstValInvalidConstTypeUntypedNilWrongAssignCountUnassignableOperandNoNewVarMultiValAssignOpInvalidIfaceAssignInvalidChanAssignIncompatibleAssignUnaddressableFieldAssignNotATypeInvalidArrayLenBlankIfaceMethodIncomparableMapKeyInvalidIfaceEmbedInvalidPtrEmbedBadRecvInvalidRecvDuplicateFieldAndMethodDuplicateMethodInvalidBlankInvalidIotaMissingInitBodyInvalidInitSigInvalidInitDeclInvalidMainDeclTooManyValuesNotAnExprTruncatedFloatNumericOverflowUndefinedOpMismatchedTypesDivByZeroNonNumericIncDecUnaddressableOperandInvalidIndirectionNonIndexableOperandInvalidIndexSwappedSliceIndicesNonSliceableOperandInvalidSliceExprInvalidShiftCountInvalidShiftOperandInvalidReceiveInvalidSendDuplicateLitKeyMissingLitKeyInvalidLitIndexOversizeArrayLitMixedStructLitInvalidStructLitMissingLitFieldDuplicateLitFieldUnexportedLitFieldInvalidLitFieldUntypedLitInvalidLitAmbiguousSelectorUndeclaredImportedNameUnexportedNameUndeclaredNameMissingFieldOrMethodBadDotDotDotSyntaxNonVariadicDotDotDotMisplacedDotDotDotInvalidDotDotDotOperandInvalidDotDotDotUncalledBuiltinInvalidAppendInvalidCapInvalidCloseInvalidCopyInvalidComplexInvalidDeleteInvalidImagInvalidLenSwappedMakeArgsInvalidMakeInvalidRealInvalidAssertImpossibleAssertInvalidConversionInvalidUntypedConversionBadOffsetofSyntaxInvalidOffsetofUnusedExprUnusedVarMissingReturnWrongResultCountOutOfScopeResultInvalidCondInvalidPostDeclInvalidChanRangeInvalidIterVarInvalidRangeExprMisplacedBreakMisplacedContinueMisplacedFallthroughDuplicateCaseDuplicateDefaultBadTypeKeywordInvalidTypeSwitchInvalidExprSwitchInvalidSelectCaseUndeclaredLabelDuplicateLabelMisplacedLabelUnusedLabelJumpOverDeclJumpIntoBlockInvalidMethodExprWrongArgCountInvalidCallUnusedResultsInvalidDeferInvalidGo" | const _ErrorCode_name = "TestBlankPkgNameMismatchedPkgNameInvalidPkgUseBadImportPathBrokenImportImportCRenamedUnusedImportInvalidInitCycleDuplicateDeclInvalidDeclCycleInvalidTypeCycleInvalidConstInitInvalidConstValInvalidConstTypeUntypedNilWrongAssignCountUnassignableOperandNoNewVarMultiValAssignOpInvalidIfaceAssignInvalidChanAssignIncompatibleAssignUnaddressableFieldAssignNotATypeInvalidArrayLenBlankIfaceMethodIncomparableMapKeyInvalidIfaceEmbedInvalidPtrEmbedBadRecvInvalidRecvDuplicateFieldAndMethodDuplicateMethodInvalidBlankInvalidIotaMissingInitBodyInvalidInitSigInvalidInitDeclInvalidMainDeclTooManyValuesNotAnExprTruncatedFloatNumericOverflowUndefinedOpMismatchedTypesDivByZeroNonNumericIncDecUnaddressableOperandInvalidIndirectionNonIndexableOperandInvalidIndexSwappedSliceIndicesNonSliceableOperandInvalidSliceExprInvalidShiftCountInvalidShiftOperandInvalidReceiveInvalidSendDuplicateLitKeyMissingLitKeyInvalidLitIndexOversizeArrayLitMixedStructLitInvalidStructLitMissingLitFieldDuplicateLitFieldUnexportedLitFieldInvalidLitFieldUntypedLitInvalidLitAmbiguousSelectorUndeclaredImportedNameUnexportedNameUndeclaredNameMissingFieldOrMethodBadDotDotDotSyntaxNonVariadicDotDotDotMisplacedDotDotDotInvalidDotDotDotOperandInvalidDotDotDotUncalledBuiltinInvalidAppendInvalidCapInvalidCloseInvalidCopyInvalidComplexInvalidDeleteInvalidImagInvalidLenSwappedMakeArgsInvalidMakeInvalidRealInvalidAssertImpossibleAssertInvalidConversionInvalidUntypedConversionBadOffsetofSyntaxInvalidOffsetofUnusedExprUnusedVarMissingReturnWrongResultCountOutOfScopeResultInvalidCondInvalidPostDeclInvalidChanRangeInvalidIterVarInvalidRangeExprMisplacedBreakMisplacedContinueMisplacedFallthroughDuplicateCaseDuplicateDefaultBadTypeKeywordInvalidTypeSwitchInvalidExprSwitchInvalidSelectCaseUndeclaredLabelDuplicateLabelMisplacedLabelUnusedLabelJumpOverDeclJumpIntoBlockInvalidMethodExprWrongArgCountInvalidCallUnusedResultsInvalidDeferInvalidGoBadDeclRepeatedDeclInvalidUnsafeAddInvalidUnsafeSliceUnsupportedFeatureNotAGenericTypeWrongTypeArgCountCannotInferTypeArgsInvalidTypeArgInvalidInstanceCycleInvalidUnionMisplacedConstraintIfaceInvalidMethodTypeParamsMisplacedTypeParam" | ||||||
|  |  | ||||||
| var _ErrorCode_index = [...]uint16{0, 4, 16, 33, 46, 59, 71, 85, 97, 113, 126, 142, 158, 174, 189, 205, 215, 231, 250, 258, 274, 292, 309, 327, 351, 359, 374, 390, 408, 425, 440, 447, 458, 481, 496, 508, 519, 534, 548, 563, 578, 591, 600, 614, 629, 640, 655, 664, 680, 700, 718, 737, 749, 768, 787, 803, 820, 839, 853, 864, 879, 892, 907, 923, 937, 953, 968, 985, 1003, 1018, 1028, 1038, 1055, 1077, 1091, 1105, 1125, 1143, 1163, 1181, 1204, 1220, 1235, 1248, 1258, 1270, 1281, 1295, 1308, 1319, 1329, 1344, 1355, 1366, 1379, 1395, 1412, 1436, 1453, 1468, 1478, 1487, 1500, 1516, 1532, 1543, 1558, 1574, 1588, 1604, 1618, 1635, 1655, 1668, 1684, 1698, 1715, 1732, 1749, 1764, 1778, 1792, 1803, 1815, 1828, 1845, 1858, 1869, 1882, 1894, 1903} | var _ErrorCode_index = [...]uint16{0, 4, 16, 33, 46, 59, 71, 85, 97, 113, 126, 142, 158, 174, 189, 205, 215, 231, 250, 258, 274, 292, 309, 327, 351, 359, 374, 390, 408, 425, 440, 447, 458, 481, 496, 508, 519, 534, 548, 563, 578, 591, 600, 614, 629, 640, 655, 664, 680, 700, 718, 737, 749, 768, 787, 803, 820, 839, 853, 864, 879, 892, 907, 923, 937, 953, 968, 985, 1003, 1018, 1028, 1038, 1055, 1077, 1091, 1105, 1125, 1143, 1163, 1181, 1204, 1220, 1235, 1248, 1258, 1270, 1281, 1295, 1308, 1319, 1329, 1344, 1355, 1366, 1379, 1395, 1412, 1436, 1453, 1468, 1478, 1487, 1500, 1516, 1532, 1543, 1558, 1574, 1588, 1604, 1618, 1635, 1655, 1668, 1684, 1698, 1715, 1732, 1749, 1764, 1778, 1792, 1803, 1815, 1828, 1845, 1858, 1869, 1882, 1894, 1903, 1910, 1922, 1938, 1956, 1974, 1989, 2006, 2025, 2039, 2059, 2071, 2095, 2118, 2136} | ||||||
|  |  | ||||||
| func (i ErrorCode) String() string { | func (i ErrorCode) String() string { | ||||||
| 	i -= 1 | 	i -= 1 | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/tools/internal/typesinternal/types.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/tools/internal/typesinternal/types.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -48,3 +48,5 @@ func ReadGo116ErrorData(err types.Error) (code ErrorCode, start, end token.Pos, | |||||||
| 	} | 	} | ||||||
| 	return ErrorCode(data[0]), token.Pos(data[1]), token.Pos(data[2]), true | 	return ErrorCode(data[0]), token.Pos(data[1]), token.Pos(data[2]), true | ||||||
| } | } | ||||||
|  |  | ||||||
|  | var SetGoVersion = func(conf *types.Config, version string) bool { return false } | ||||||
|  | |||||||
							
								
								
									
										19
									
								
								vendor/golang.org/x/tools/internal/typesinternal/types_118.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								vendor/golang.org/x/tools/internal/typesinternal/types_118.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | // Copyright 2021 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. | ||||||
|  |  | ||||||
|  | //go:build go1.18 | ||||||
|  | // +build go1.18 | ||||||
|  |  | ||||||
|  | package typesinternal | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"go/types" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | func init() { | ||||||
|  | 	SetGoVersion = func(conf *types.Config, version string) bool { | ||||||
|  | 		conf.GoVersion = version | ||||||
|  | 		return true | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										27
									
								
								vendor/golang.org/x/xerrors/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								vendor/golang.org/x/xerrors/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,27 +0,0 @@ | |||||||
| Copyright (c) 2019 The Go Authors. All rights reserved. |  | ||||||
|  |  | ||||||
| Redistribution and use in source and binary forms, with or without |  | ||||||
| modification, are permitted provided that the following conditions are |  | ||||||
| met: |  | ||||||
|  |  | ||||||
|    * Redistributions of source code must retain the above copyright |  | ||||||
| notice, this list of conditions and the following disclaimer. |  | ||||||
|    * Redistributions in binary form must reproduce the above |  | ||||||
| copyright notice, this list of conditions and the following disclaimer |  | ||||||
| in the documentation and/or other materials provided with the |  | ||||||
| distribution. |  | ||||||
|    * Neither the name of Google Inc. nor the names of its |  | ||||||
| contributors may be used to endorse or promote products derived from |  | ||||||
| this software without specific prior written permission. |  | ||||||
|  |  | ||||||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |  | ||||||
| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |  | ||||||
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |  | ||||||
| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |  | ||||||
| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |  | ||||||
| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |  | ||||||
| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |  | ||||||
| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |  | ||||||
| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |  | ||||||
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |  | ||||||
| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |  | ||||||
							
								
								
									
										22
									
								
								vendor/golang.org/x/xerrors/PATENTS
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/golang.org/x/xerrors/PATENTS
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,22 +0,0 @@ | |||||||
| Additional IP Rights Grant (Patents) |  | ||||||
|  |  | ||||||
| "This implementation" means the copyrightable works distributed by |  | ||||||
| Google as part of the Go project. |  | ||||||
|  |  | ||||||
| Google hereby grants to You a perpetual, worldwide, non-exclusive, |  | ||||||
| no-charge, royalty-free, irrevocable (except as stated in this section) |  | ||||||
| patent license to make, have made, use, offer to sell, sell, import, |  | ||||||
| transfer and otherwise run, modify and propagate the contents of this |  | ||||||
| implementation of Go, where such license applies only to those patent |  | ||||||
| claims, both currently owned or controlled by Google and acquired in |  | ||||||
| the future, licensable by Google that are necessarily infringed by this |  | ||||||
| implementation of Go.  This grant does not include claims that would be |  | ||||||
| infringed only as a consequence of further modification of this |  | ||||||
| implementation.  If you or your agent or exclusive licensee institute or |  | ||||||
| order or agree to the institution of patent litigation against any |  | ||||||
| entity (including a cross-claim or counterclaim in a lawsuit) alleging |  | ||||||
| that this implementation of Go or any code incorporated within this |  | ||||||
| implementation of Go constitutes direct or contributory patent |  | ||||||
| infringement, or inducement of patent infringement, then any patent |  | ||||||
| rights granted to you under this License for this implementation of Go |  | ||||||
| shall terminate as of the date such litigation is filed. |  | ||||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/xerrors/README
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/xerrors/README
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,2 +0,0 @@ | |||||||
| This repository holds the transition packages for the new Go 1.13 error values. |  | ||||||
| See golang.org/design/29934-error-values. |  | ||||||
							
								
								
									
										193
									
								
								vendor/golang.org/x/xerrors/adaptor.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										193
									
								
								vendor/golang.org/x/xerrors/adaptor.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,193 +0,0 @@ | |||||||
| // Copyright 2018 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 xerrors |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"bytes" |  | ||||||
| 	"fmt" |  | ||||||
| 	"io" |  | ||||||
| 	"reflect" |  | ||||||
| 	"strconv" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| // FormatError calls the FormatError method of f with an errors.Printer |  | ||||||
| // configured according to s and verb, and writes the result to s. |  | ||||||
| func FormatError(f Formatter, s fmt.State, verb rune) { |  | ||||||
| 	// Assuming this function is only called from the Format method, and given |  | ||||||
| 	// that FormatError takes precedence over Format, it cannot be called from |  | ||||||
| 	// any package that supports errors.Formatter. It is therefore safe to |  | ||||||
| 	// disregard that State may be a specific printer implementation and use one |  | ||||||
| 	// of our choice instead. |  | ||||||
|  |  | ||||||
| 	// limitations: does not support printing error as Go struct. |  | ||||||
|  |  | ||||||
| 	var ( |  | ||||||
| 		sep    = " " // separator before next error |  | ||||||
| 		p      = &state{State: s} |  | ||||||
| 		direct = true |  | ||||||
| 	) |  | ||||||
|  |  | ||||||
| 	var err error = f |  | ||||||
|  |  | ||||||
| 	switch verb { |  | ||||||
| 	// Note that this switch must match the preference order |  | ||||||
| 	// for ordinary string printing (%#v before %+v, and so on). |  | ||||||
|  |  | ||||||
| 	case 'v': |  | ||||||
| 		if s.Flag('#') { |  | ||||||
| 			if stringer, ok := err.(fmt.GoStringer); ok { |  | ||||||
| 				io.WriteString(&p.buf, stringer.GoString()) |  | ||||||
| 				goto exit |  | ||||||
| 			} |  | ||||||
| 			// proceed as if it were %v |  | ||||||
| 		} else if s.Flag('+') { |  | ||||||
| 			p.printDetail = true |  | ||||||
| 			sep = "\n  - " |  | ||||||
| 		} |  | ||||||
| 	case 's': |  | ||||||
| 	case 'q', 'x', 'X': |  | ||||||
| 		// Use an intermediate buffer in the rare cases that precision, |  | ||||||
| 		// truncation, or one of the alternative verbs (q, x, and X) are |  | ||||||
| 		// specified. |  | ||||||
| 		direct = false |  | ||||||
|  |  | ||||||
| 	default: |  | ||||||
| 		p.buf.WriteString("%!") |  | ||||||
| 		p.buf.WriteRune(verb) |  | ||||||
| 		p.buf.WriteByte('(') |  | ||||||
| 		switch { |  | ||||||
| 		case err != nil: |  | ||||||
| 			p.buf.WriteString(reflect.TypeOf(f).String()) |  | ||||||
| 		default: |  | ||||||
| 			p.buf.WriteString("<nil>") |  | ||||||
| 		} |  | ||||||
| 		p.buf.WriteByte(')') |  | ||||||
| 		io.Copy(s, &p.buf) |  | ||||||
| 		return |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| loop: |  | ||||||
| 	for { |  | ||||||
| 		switch v := err.(type) { |  | ||||||
| 		case Formatter: |  | ||||||
| 			err = v.FormatError((*printer)(p)) |  | ||||||
| 		case fmt.Formatter: |  | ||||||
| 			v.Format(p, 'v') |  | ||||||
| 			break loop |  | ||||||
| 		default: |  | ||||||
| 			io.WriteString(&p.buf, v.Error()) |  | ||||||
| 			break loop |  | ||||||
| 		} |  | ||||||
| 		if err == nil { |  | ||||||
| 			break |  | ||||||
| 		} |  | ||||||
| 		if p.needColon || !p.printDetail { |  | ||||||
| 			p.buf.WriteByte(':') |  | ||||||
| 			p.needColon = false |  | ||||||
| 		} |  | ||||||
| 		p.buf.WriteString(sep) |  | ||||||
| 		p.inDetail = false |  | ||||||
| 		p.needNewline = false |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| exit: |  | ||||||
| 	width, okW := s.Width() |  | ||||||
| 	prec, okP := s.Precision() |  | ||||||
|  |  | ||||||
| 	if !direct || (okW && width > 0) || okP { |  | ||||||
| 		// Construct format string from State s. |  | ||||||
| 		format := []byte{'%'} |  | ||||||
| 		if s.Flag('-') { |  | ||||||
| 			format = append(format, '-') |  | ||||||
| 		} |  | ||||||
| 		if s.Flag('+') { |  | ||||||
| 			format = append(format, '+') |  | ||||||
| 		} |  | ||||||
| 		if s.Flag(' ') { |  | ||||||
| 			format = append(format, ' ') |  | ||||||
| 		} |  | ||||||
| 		if okW { |  | ||||||
| 			format = strconv.AppendInt(format, int64(width), 10) |  | ||||||
| 		} |  | ||||||
| 		if okP { |  | ||||||
| 			format = append(format, '.') |  | ||||||
| 			format = strconv.AppendInt(format, int64(prec), 10) |  | ||||||
| 		} |  | ||||||
| 		format = append(format, string(verb)...) |  | ||||||
| 		fmt.Fprintf(s, string(format), p.buf.String()) |  | ||||||
| 	} else { |  | ||||||
| 		io.Copy(s, &p.buf) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var detailSep = []byte("\n    ") |  | ||||||
|  |  | ||||||
| // state tracks error printing state. It implements fmt.State. |  | ||||||
| type state struct { |  | ||||||
| 	fmt.State |  | ||||||
| 	buf bytes.Buffer |  | ||||||
|  |  | ||||||
| 	printDetail bool |  | ||||||
| 	inDetail    bool |  | ||||||
| 	needColon   bool |  | ||||||
| 	needNewline bool |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (s *state) Write(b []byte) (n int, err error) { |  | ||||||
| 	if s.printDetail { |  | ||||||
| 		if len(b) == 0 { |  | ||||||
| 			return 0, nil |  | ||||||
| 		} |  | ||||||
| 		if s.inDetail && s.needColon { |  | ||||||
| 			s.needNewline = true |  | ||||||
| 			if b[0] == '\n' { |  | ||||||
| 				b = b[1:] |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		k := 0 |  | ||||||
| 		for i, c := range b { |  | ||||||
| 			if s.needNewline { |  | ||||||
| 				if s.inDetail && s.needColon { |  | ||||||
| 					s.buf.WriteByte(':') |  | ||||||
| 					s.needColon = false |  | ||||||
| 				} |  | ||||||
| 				s.buf.Write(detailSep) |  | ||||||
| 				s.needNewline = false |  | ||||||
| 			} |  | ||||||
| 			if c == '\n' { |  | ||||||
| 				s.buf.Write(b[k:i]) |  | ||||||
| 				k = i + 1 |  | ||||||
| 				s.needNewline = true |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		s.buf.Write(b[k:]) |  | ||||||
| 		if !s.inDetail { |  | ||||||
| 			s.needColon = true |  | ||||||
| 		} |  | ||||||
| 	} else if !s.inDetail { |  | ||||||
| 		s.buf.Write(b) |  | ||||||
| 	} |  | ||||||
| 	return len(b), nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // printer wraps a state to implement an xerrors.Printer. |  | ||||||
| type printer state |  | ||||||
|  |  | ||||||
| func (s *printer) Print(args ...interface{}) { |  | ||||||
| 	if !s.inDetail || s.printDetail { |  | ||||||
| 		fmt.Fprint((*state)(s), args...) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (s *printer) Printf(format string, args ...interface{}) { |  | ||||||
| 	if !s.inDetail || s.printDetail { |  | ||||||
| 		fmt.Fprintf((*state)(s), format, args...) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (s *printer) Detail() bool { |  | ||||||
| 	s.inDetail = true |  | ||||||
| 	return s.printDetail |  | ||||||
| } |  | ||||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/xerrors/codereview.cfg
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/xerrors/codereview.cfg
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1 +0,0 @@ | |||||||
| issuerepo: golang/go |  | ||||||
							
								
								
									
										22
									
								
								vendor/golang.org/x/xerrors/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/golang.org/x/xerrors/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,22 +0,0 @@ | |||||||
| // Copyright 2019 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 xerrors implements functions to manipulate errors. |  | ||||||
| // |  | ||||||
| // This package is based on the Go 2 proposal for error values: |  | ||||||
| //   https://golang.org/design/29934-error-values |  | ||||||
| // |  | ||||||
| // These functions were incorporated into the standard library's errors package |  | ||||||
| // in Go 1.13: |  | ||||||
| // - Is |  | ||||||
| // - As |  | ||||||
| // - Unwrap |  | ||||||
| // |  | ||||||
| // Also, Errorf's %w verb was incorporated into fmt.Errorf. |  | ||||||
| // |  | ||||||
| // Use this package to get equivalent behavior in all supported Go versions. |  | ||||||
| // |  | ||||||
| // No other features of this package were included in Go 1.13, and at present |  | ||||||
| // there are no plans to include any of them. |  | ||||||
| package xerrors // import "golang.org/x/xerrors" |  | ||||||
							
								
								
									
										33
									
								
								vendor/golang.org/x/xerrors/errors.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										33
									
								
								vendor/golang.org/x/xerrors/errors.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,33 +0,0 @@ | |||||||
| // 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 xerrors |  | ||||||
|  |  | ||||||
| import "fmt" |  | ||||||
|  |  | ||||||
| // errorString is a trivial implementation of error. |  | ||||||
| type errorString struct { |  | ||||||
| 	s     string |  | ||||||
| 	frame Frame |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // New returns an error that formats as the given text. |  | ||||||
| // |  | ||||||
| // The returned error contains a Frame set to the caller's location and |  | ||||||
| // implements Formatter to show this information when printed with details. |  | ||||||
| func New(text string) error { |  | ||||||
| 	return &errorString{text, Caller(1)} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (e *errorString) Error() string { |  | ||||||
| 	return e.s |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (e *errorString) Format(s fmt.State, v rune) { FormatError(e, s, v) } |  | ||||||
|  |  | ||||||
| func (e *errorString) FormatError(p Printer) (next error) { |  | ||||||
| 	p.Print(e.s) |  | ||||||
| 	e.frame.Format(p) |  | ||||||
| 	return nil |  | ||||||
| } |  | ||||||
							
								
								
									
										187
									
								
								vendor/golang.org/x/xerrors/fmt.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										187
									
								
								vendor/golang.org/x/xerrors/fmt.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,187 +0,0 @@ | |||||||
| // Copyright 2018 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 xerrors |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"fmt" |  | ||||||
| 	"strings" |  | ||||||
| 	"unicode" |  | ||||||
| 	"unicode/utf8" |  | ||||||
|  |  | ||||||
| 	"golang.org/x/xerrors/internal" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| const percentBangString = "%!" |  | ||||||
|  |  | ||||||
| // Errorf formats according to a format specifier and returns the string as a |  | ||||||
| // value that satisfies error. |  | ||||||
| // |  | ||||||
| // The returned error includes the file and line number of the caller when |  | ||||||
| // formatted with additional detail enabled. If the last argument is an error |  | ||||||
| // the returned error's Format method will return it if the format string ends |  | ||||||
| // with ": %s", ": %v", or ": %w". If the last argument is an error and the |  | ||||||
| // format string ends with ": %w", the returned error implements an Unwrap |  | ||||||
| // method returning it. |  | ||||||
| // |  | ||||||
| // If the format specifier includes a %w verb with an error operand in a |  | ||||||
| // position other than at the end, the returned error will still implement an |  | ||||||
| // Unwrap method returning the operand, but the error's Format method will not |  | ||||||
| // return the wrapped error. |  | ||||||
| // |  | ||||||
| // It is invalid to include more than one %w verb or to supply it with an |  | ||||||
| // operand that does not implement the error interface. The %w verb is otherwise |  | ||||||
| // a synonym for %v. |  | ||||||
| func Errorf(format string, a ...interface{}) error { |  | ||||||
| 	format = formatPlusW(format) |  | ||||||
| 	// Support a ": %[wsv]" suffix, which works well with xerrors.Formatter. |  | ||||||
| 	wrap := strings.HasSuffix(format, ": %w") |  | ||||||
| 	idx, format2, ok := parsePercentW(format) |  | ||||||
| 	percentWElsewhere := !wrap && idx >= 0 |  | ||||||
| 	if !percentWElsewhere && (wrap || strings.HasSuffix(format, ": %s") || strings.HasSuffix(format, ": %v")) { |  | ||||||
| 		err := errorAt(a, len(a)-1) |  | ||||||
| 		if err == nil { |  | ||||||
| 			return &noWrapError{fmt.Sprintf(format, a...), nil, Caller(1)} |  | ||||||
| 		} |  | ||||||
| 		// TODO: this is not entirely correct. The error value could be |  | ||||||
| 		// printed elsewhere in format if it mixes numbered with unnumbered |  | ||||||
| 		// substitutions. With relatively small changes to doPrintf we can |  | ||||||
| 		// have it optionally ignore extra arguments and pass the argument |  | ||||||
| 		// list in its entirety. |  | ||||||
| 		msg := fmt.Sprintf(format[:len(format)-len(": %s")], a[:len(a)-1]...) |  | ||||||
| 		frame := Frame{} |  | ||||||
| 		if internal.EnableTrace { |  | ||||||
| 			frame = Caller(1) |  | ||||||
| 		} |  | ||||||
| 		if wrap { |  | ||||||
| 			return &wrapError{msg, err, frame} |  | ||||||
| 		} |  | ||||||
| 		return &noWrapError{msg, err, frame} |  | ||||||
| 	} |  | ||||||
| 	// Support %w anywhere. |  | ||||||
| 	// TODO: don't repeat the wrapped error's message when %w occurs in the middle. |  | ||||||
| 	msg := fmt.Sprintf(format2, a...) |  | ||||||
| 	if idx < 0 { |  | ||||||
| 		return &noWrapError{msg, nil, Caller(1)} |  | ||||||
| 	} |  | ||||||
| 	err := errorAt(a, idx) |  | ||||||
| 	if !ok || err == nil { |  | ||||||
| 		// Too many %ws or argument of %w is not an error. Approximate the Go |  | ||||||
| 		// 1.13 fmt.Errorf message. |  | ||||||
| 		return &noWrapError{fmt.Sprintf("%sw(%s)", percentBangString, msg), nil, Caller(1)} |  | ||||||
| 	} |  | ||||||
| 	frame := Frame{} |  | ||||||
| 	if internal.EnableTrace { |  | ||||||
| 		frame = Caller(1) |  | ||||||
| 	} |  | ||||||
| 	return &wrapError{msg, err, frame} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func errorAt(args []interface{}, i int) error { |  | ||||||
| 	if i < 0 || i >= len(args) { |  | ||||||
| 		return nil |  | ||||||
| 	} |  | ||||||
| 	err, ok := args[i].(error) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil |  | ||||||
| 	} |  | ||||||
| 	return err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // formatPlusW is used to avoid the vet check that will barf at %w. |  | ||||||
| func formatPlusW(s string) string { |  | ||||||
| 	return s |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Return the index of the only %w in format, or -1 if none. |  | ||||||
| // Also return a rewritten format string with %w replaced by %v, and |  | ||||||
| // false if there is more than one %w. |  | ||||||
| // TODO: handle "%[N]w". |  | ||||||
| func parsePercentW(format string) (idx int, newFormat string, ok bool) { |  | ||||||
| 	// Loosely copied from golang.org/x/tools/go/analysis/passes/printf/printf.go. |  | ||||||
| 	idx = -1 |  | ||||||
| 	ok = true |  | ||||||
| 	n := 0 |  | ||||||
| 	sz := 0 |  | ||||||
| 	var isW bool |  | ||||||
| 	for i := 0; i < len(format); i += sz { |  | ||||||
| 		if format[i] != '%' { |  | ||||||
| 			sz = 1 |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		// "%%" is not a format directive. |  | ||||||
| 		if i+1 < len(format) && format[i+1] == '%' { |  | ||||||
| 			sz = 2 |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		sz, isW = parsePrintfVerb(format[i:]) |  | ||||||
| 		if isW { |  | ||||||
| 			if idx >= 0 { |  | ||||||
| 				ok = false |  | ||||||
| 			} else { |  | ||||||
| 				idx = n |  | ||||||
| 			} |  | ||||||
| 			// "Replace" the last character, the 'w', with a 'v'. |  | ||||||
| 			p := i + sz - 1 |  | ||||||
| 			format = format[:p] + "v" + format[p+1:] |  | ||||||
| 		} |  | ||||||
| 		n++ |  | ||||||
| 	} |  | ||||||
| 	return idx, format, ok |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Parse the printf verb starting with a % at s[0]. |  | ||||||
| // Return how many bytes it occupies and whether the verb is 'w'. |  | ||||||
| func parsePrintfVerb(s string) (int, bool) { |  | ||||||
| 	// Assume only that the directive is a sequence of non-letters followed by a single letter. |  | ||||||
| 	sz := 0 |  | ||||||
| 	var r rune |  | ||||||
| 	for i := 1; i < len(s); i += sz { |  | ||||||
| 		r, sz = utf8.DecodeRuneInString(s[i:]) |  | ||||||
| 		if unicode.IsLetter(r) { |  | ||||||
| 			return i + sz, r == 'w' |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	return len(s), false |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type noWrapError struct { |  | ||||||
| 	msg   string |  | ||||||
| 	err   error |  | ||||||
| 	frame Frame |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (e *noWrapError) Error() string { |  | ||||||
| 	return fmt.Sprint(e) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (e *noWrapError) Format(s fmt.State, v rune) { FormatError(e, s, v) } |  | ||||||
|  |  | ||||||
| func (e *noWrapError) FormatError(p Printer) (next error) { |  | ||||||
| 	p.Print(e.msg) |  | ||||||
| 	e.frame.Format(p) |  | ||||||
| 	return e.err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type wrapError struct { |  | ||||||
| 	msg   string |  | ||||||
| 	err   error |  | ||||||
| 	frame Frame |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (e *wrapError) Error() string { |  | ||||||
| 	return fmt.Sprint(e) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (e *wrapError) Format(s fmt.State, v rune) { FormatError(e, s, v) } |  | ||||||
|  |  | ||||||
| func (e *wrapError) FormatError(p Printer) (next error) { |  | ||||||
| 	p.Print(e.msg) |  | ||||||
| 	e.frame.Format(p) |  | ||||||
| 	return e.err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (e *wrapError) Unwrap() error { |  | ||||||
| 	return e.err |  | ||||||
| } |  | ||||||
							
								
								
									
										34
									
								
								vendor/golang.org/x/xerrors/format.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										34
									
								
								vendor/golang.org/x/xerrors/format.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,34 +0,0 @@ | |||||||
| // Copyright 2018 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 xerrors |  | ||||||
|  |  | ||||||
| // A Formatter formats error messages. |  | ||||||
| type Formatter interface { |  | ||||||
| 	error |  | ||||||
|  |  | ||||||
| 	// FormatError prints the receiver's first error and returns the next error in |  | ||||||
| 	// the error chain, if any. |  | ||||||
| 	FormatError(p Printer) (next error) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // A Printer formats error messages. |  | ||||||
| // |  | ||||||
| // The most common implementation of Printer is the one provided by package fmt |  | ||||||
| // during Printf (as of Go 1.13). Localization packages such as golang.org/x/text/message |  | ||||||
| // typically provide their own implementations. |  | ||||||
| type Printer interface { |  | ||||||
| 	// Print appends args to the message output. |  | ||||||
| 	Print(args ...interface{}) |  | ||||||
|  |  | ||||||
| 	// Printf writes a formatted string. |  | ||||||
| 	Printf(format string, args ...interface{}) |  | ||||||
|  |  | ||||||
| 	// Detail reports whether error detail is requested. |  | ||||||
| 	// After the first call to Detail, all text written to the Printer |  | ||||||
| 	// is formatted as additional detail, or ignored when |  | ||||||
| 	// detail has not been requested. |  | ||||||
| 	// If Detail returns false, the caller can avoid printing the detail at all. |  | ||||||
| 	Detail() bool |  | ||||||
| } |  | ||||||
							
								
								
									
										56
									
								
								vendor/golang.org/x/xerrors/frame.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										56
									
								
								vendor/golang.org/x/xerrors/frame.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,56 +0,0 @@ | |||||||
| // Copyright 2018 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 xerrors |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"runtime" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| // A Frame contains part of a call stack. |  | ||||||
| type Frame struct { |  | ||||||
| 	// Make room for three PCs: the one we were asked for, what it called, |  | ||||||
| 	// and possibly a PC for skipPleaseUseCallersFrames. See: |  | ||||||
| 	// https://go.googlesource.com/go/+/032678e0fb/src/runtime/extern.go#169 |  | ||||||
| 	frames [3]uintptr |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Caller returns a Frame that describes a frame on the caller's stack. |  | ||||||
| // The argument skip is the number of frames to skip over. |  | ||||||
| // Caller(0) returns the frame for the caller of Caller. |  | ||||||
| func Caller(skip int) Frame { |  | ||||||
| 	var s Frame |  | ||||||
| 	runtime.Callers(skip+1, s.frames[:]) |  | ||||||
| 	return s |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // location reports the file, line, and function of a frame. |  | ||||||
| // |  | ||||||
| // The returned function may be "" even if file and line are not. |  | ||||||
| func (f Frame) location() (function, file string, line int) { |  | ||||||
| 	frames := runtime.CallersFrames(f.frames[:]) |  | ||||||
| 	if _, ok := frames.Next(); !ok { |  | ||||||
| 		return "", "", 0 |  | ||||||
| 	} |  | ||||||
| 	fr, ok := frames.Next() |  | ||||||
| 	if !ok { |  | ||||||
| 		return "", "", 0 |  | ||||||
| 	} |  | ||||||
| 	return fr.Function, fr.File, fr.Line |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Format prints the stack as error detail. |  | ||||||
| // It should be called from an error's Format implementation |  | ||||||
| // after printing any other error detail. |  | ||||||
| func (f Frame) Format(p Printer) { |  | ||||||
| 	if p.Detail() { |  | ||||||
| 		function, file, line := f.location() |  | ||||||
| 		if function != "" { |  | ||||||
| 			p.Printf("%s\n    ", function) |  | ||||||
| 		} |  | ||||||
| 		if file != "" { |  | ||||||
| 			p.Printf("%s:%d\n", file, line) |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/xerrors/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/xerrors/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,3 +0,0 @@ | |||||||
| module golang.org/x/xerrors |  | ||||||
|  |  | ||||||
| go 1.11 |  | ||||||
							
								
								
									
										8
									
								
								vendor/golang.org/x/xerrors/internal/internal.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/golang.org/x/xerrors/internal/internal.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,8 +0,0 @@ | |||||||
| // Copyright 2018 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 internal |  | ||||||
|  |  | ||||||
| // EnableTrace indicates whether stack information should be recorded in errors. |  | ||||||
| var EnableTrace = true |  | ||||||
							
								
								
									
										106
									
								
								vendor/golang.org/x/xerrors/wrap.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										106
									
								
								vendor/golang.org/x/xerrors/wrap.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,106 +0,0 @@ | |||||||
| // Copyright 2018 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 xerrors |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"reflect" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| // A Wrapper provides context around another error. |  | ||||||
| type Wrapper interface { |  | ||||||
| 	// Unwrap returns the next error in the error chain. |  | ||||||
| 	// If there is no next error, Unwrap returns nil. |  | ||||||
| 	Unwrap() error |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Opaque returns an error with the same error formatting as err |  | ||||||
| // but that does not match err and cannot be unwrapped. |  | ||||||
| func Opaque(err error) error { |  | ||||||
| 	return noWrapper{err} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type noWrapper struct { |  | ||||||
| 	error |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (e noWrapper) FormatError(p Printer) (next error) { |  | ||||||
| 	if f, ok := e.error.(Formatter); ok { |  | ||||||
| 		return f.FormatError(p) |  | ||||||
| 	} |  | ||||||
| 	p.Print(e.error) |  | ||||||
| 	return nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Unwrap returns the result of calling the Unwrap method on err, if err implements |  | ||||||
| // Unwrap. Otherwise, Unwrap returns nil. |  | ||||||
| func Unwrap(err error) error { |  | ||||||
| 	u, ok := err.(Wrapper) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil |  | ||||||
| 	} |  | ||||||
| 	return u.Unwrap() |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Is reports whether any error in err's chain matches target. |  | ||||||
| // |  | ||||||
| // An error is considered to match a target if it is equal to that target or if |  | ||||||
| // it implements a method Is(error) bool such that Is(target) returns true. |  | ||||||
| func Is(err, target error) bool { |  | ||||||
| 	if target == nil { |  | ||||||
| 		return err == target |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	isComparable := reflect.TypeOf(target).Comparable() |  | ||||||
| 	for { |  | ||||||
| 		if isComparable && err == target { |  | ||||||
| 			return true |  | ||||||
| 		} |  | ||||||
| 		if x, ok := err.(interface{ Is(error) bool }); ok && x.Is(target) { |  | ||||||
| 			return true |  | ||||||
| 		} |  | ||||||
| 		// TODO: consider supporing target.Is(err). This would allow |  | ||||||
| 		// user-definable predicates, but also may allow for coping with sloppy |  | ||||||
| 		// APIs, thereby making it easier to get away with them. |  | ||||||
| 		if err = Unwrap(err); err == nil { |  | ||||||
| 			return false |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // As finds the first error in err's chain that matches the type to which target |  | ||||||
| // points, and if so, sets the target to its value and returns true. An error |  | ||||||
| // matches a type if it is assignable to the target type, or if it has a method |  | ||||||
| // As(interface{}) bool such that As(target) returns true. As will panic if target |  | ||||||
| // is not a non-nil pointer to a type which implements error or is of interface type. |  | ||||||
| // |  | ||||||
| // The As method should set the target to its value and return true if err |  | ||||||
| // matches the type to which target points. |  | ||||||
| func As(err error, target interface{}) bool { |  | ||||||
| 	if target == nil { |  | ||||||
| 		panic("errors: target cannot be nil") |  | ||||||
| 	} |  | ||||||
| 	val := reflect.ValueOf(target) |  | ||||||
| 	typ := val.Type() |  | ||||||
| 	if typ.Kind() != reflect.Ptr || val.IsNil() { |  | ||||||
| 		panic("errors: target must be a non-nil pointer") |  | ||||||
| 	} |  | ||||||
| 	if e := typ.Elem(); e.Kind() != reflect.Interface && !e.Implements(errorType) { |  | ||||||
| 		panic("errors: *target must be interface or implement error") |  | ||||||
| 	} |  | ||||||
| 	targetType := typ.Elem() |  | ||||||
| 	for err != nil { |  | ||||||
| 		if reflect.TypeOf(err).AssignableTo(targetType) { |  | ||||||
| 			val.Elem().Set(reflect.ValueOf(err)) |  | ||||||
| 			return true |  | ||||||
| 		} |  | ||||||
| 		if x, ok := err.(interface{ As(interface{}) bool }); ok && x.As(target) { |  | ||||||
| 			return true |  | ||||||
| 		} |  | ||||||
| 		err = Unwrap(err) |  | ||||||
| 	} |  | ||||||
| 	return false |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var errorType = reflect.TypeOf((*error)(nil)).Elem() |  | ||||||
							
								
								
									
										7
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							| @ -68,7 +68,7 @@ go.starlark.net/syntax | |||||||
| ## explicit | ## explicit | ||||||
| golang.org/x/arch/arm64/arm64asm | golang.org/x/arch/arm64/arm64asm | ||||||
| golang.org/x/arch/x86/x86asm | golang.org/x/arch/x86/x86asm | ||||||
| # golang.org/x/mod v0.5.1 | # golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 | ||||||
| golang.org/x/mod/semver | golang.org/x/mod/semver | ||||||
| # golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1 | # golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1 | ||||||
| ## explicit | ## explicit | ||||||
| @ -76,7 +76,7 @@ golang.org/x/sys/execabs | |||||||
| golang.org/x/sys/internal/unsafeheader | golang.org/x/sys/internal/unsafeheader | ||||||
| golang.org/x/sys/unix | golang.org/x/sys/unix | ||||||
| golang.org/x/sys/windows | golang.org/x/sys/windows | ||||||
| # golang.org/x/tools v0.1.9 | # golang.org/x/tools v0.1.11 | ||||||
| ## explicit | ## explicit | ||||||
| golang.org/x/tools/go/gcexportdata | golang.org/x/tools/go/gcexportdata | ||||||
| golang.org/x/tools/go/internal/gcimporter | golang.org/x/tools/go/internal/gcimporter | ||||||
| @ -91,8 +91,7 @@ golang.org/x/tools/internal/packagesinternal | |||||||
| golang.org/x/tools/internal/typeparams | golang.org/x/tools/internal/typeparams | ||||||
| golang.org/x/tools/internal/typesinternal | golang.org/x/tools/internal/typesinternal | ||||||
| # golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 | # golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 | ||||||
| golang.org/x/xerrors | ## explicit | ||||||
| golang.org/x/xerrors/internal |  | ||||||
| # gopkg.in/yaml.v2 v2.4.0 | # gopkg.in/yaml.v2 v2.4.0 | ||||||
| ## explicit | ## explicit | ||||||
| gopkg.in/yaml.v2 | gopkg.in/yaml.v2 | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user