OXIESEC PANEL
- Current Dir:
/
/
opt
/
golang
/
1.19.4
/
src
/
go
/
types
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
π
..
-
12/01/2022 06:13:56 PM
rwxr-xr-x
π
api.go
17.05 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
api_test.go
81.16 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
array.go
802 bytes
12/01/2022 06:12:58 PM
rw-r--r--
π
assignments.go
12.86 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
basic.go
1.48 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
builtins.go
24.28 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
builtins_test.go
9.7 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
call.go
22.29 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
chan.go
909 bytes
12/01/2022 06:12:58 PM
rw-r--r--
π
check.go
17.32 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
check_test.go
12.11 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
context.go
4.34 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
context_test.go
2.33 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
conversions.go
8.28 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
decl.go
28.77 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
errorcodes.go
31.51 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
errorcodes_test.go
4.95 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
errors.go
9.87 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
errors_test.go
1 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
eval.go
3.05 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
eval_test.go
7.4 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
example_test.go
9.03 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
expr.go
51.97 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
exprstring.go
4.81 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
exprstring_test.go
2.36 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
gccgosizes.go
1.02 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
gotype.go
8.33 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
hilbert_test.go
3.61 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
index.go
11.03 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
infer.go
25.18 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
initorder.go
9.48 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
instantiate.go
9.94 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
instantiate_test.go
6.02 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
interface.go
8.08 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
issues_test.go
17.49 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
labels.go
7.17 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
lookup.go
16.93 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
main_test.go
335 bytes
12/01/2022 06:12:58 PM
rw-r--r--
π
map.go
658 bytes
12/01/2022 06:12:58 PM
rw-r--r--
π
methodset.go
6.75 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
methodset_test.go
5.75 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
mono.go
9.05 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
mono_test.go
2.63 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
named.go
22.37 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
named_test.go
2.69 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
object.go
17.92 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
object_test.go
5.21 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
objset.go
927 bytes
12/01/2022 06:12:58 PM
rw-r--r--
π
operand.go
10 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
package.go
2.38 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
pointer.go
634 bytes
12/01/2022 06:12:58 PM
rw-r--r--
π
predicates.go
14.71 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
resolver.go
24.38 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
resolver_test.go
4.58 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
return.go
4.21 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
scope.go
9.33 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
selection.go
3.99 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
self_test.go
2.57 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
signature.go
12.49 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
sizeof_test.go
1.26 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
sizes.go
7.56 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
sizes_test.go
3.33 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
slice.go
576 bytes
12/01/2022 06:12:58 PM
rw-r--r--
π
stdlib_test.go
9.45 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
stmt.go
26.17 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
struct.go
6.04 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
subst.go
10.76 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
termlist.go
3.68 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
termlist_test.go
7.18 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
testdata
-
12/01/2022 06:13:56 PM
rwxr-xr-x
π
token_test.go
1.21 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
tuple.go
928 bytes
12/01/2022 06:12:58 PM
rw-r--r--
π
type.go
2.92 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
typelists.go
1.84 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
typeparam.go
4.74 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
typeset.go
14.22 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
typeset_test.go
2.34 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
typestring.go
10.64 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
typestring_test.go
4.21 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
typeterm.go
3.52 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
typeterm_test.go
5.1 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
typexpr.go
14.64 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
unify.go
18.35 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
union.go
6.22 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
universe.go
7.66 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
validtype.go
7.77 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
version.go
2.2 KB
12/01/2022 06:12:58 PM
rw-r--r--
Editing: typeterm.go
Close
// 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. package types // A term describes elementary type sets: // // β : (*term)(nil) == β // set of no types (empty set) // π€: &term{} == π€ // set of all types (π€niverse) // T: &term{false, T} == {T} // set of type T // ~t: &term{true, t} == {t' | under(t') == t} // set of types with underlying type t type term struct { tilde bool // valid if typ != nil typ Type } func (x *term) String() string { switch { case x == nil: return "β " case x.typ == nil: return "π€" case x.tilde: return "~" + x.typ.String() default: return x.typ.String() } } // equal reports whether x and y represent the same type set. func (x *term) equal(y *term) bool { // easy cases switch { case x == nil || y == nil: return x == y case x.typ == nil || y.typ == nil: return x.typ == y.typ } // β β x, y β π€ return x.tilde == y.tilde && Identical(x.typ, y.typ) } // union returns the union x βͺ y: zero, one, or two non-nil terms. func (x *term) union(y *term) (_, _ *term) { // easy cases switch { case x == nil && y == nil: return nil, nil // β βͺ β == β case x == nil: return y, nil // β βͺ y == y case y == nil: return x, nil // x βͺ β == x case x.typ == nil: return x, nil // π€ βͺ y == π€ case y.typ == nil: return y, nil // x βͺ π€ == π€ } // β β x, y β π€ if x.disjoint(y) { return x, y // x βͺ y == (x, y) if x β© y == β } // x.typ == y.typ // ~t βͺ ~t == ~t // ~t βͺ T == ~t // T βͺ ~t == ~t // T βͺ T == T if x.tilde || !y.tilde { return x, nil } return y, nil } // intersect returns the intersection x β© y. func (x *term) intersect(y *term) *term { // easy cases switch { case x == nil || y == nil: return nil // β β© y == β and β© β == β case x.typ == nil: return y // π€ β© y == y case y.typ == nil: return x // x β© π€ == x } // β β x, y β π€ if x.disjoint(y) { return nil // x β© y == β if x β© y == β } // x.typ == y.typ // ~t β© ~t == ~t // ~t β© T == T // T β© ~t == T // T β© T == T if !x.tilde || y.tilde { return x } return y } // includes reports whether t β x. func (x *term) includes(t Type) bool { // easy cases switch { case x == nil: return false // t β β == false case x.typ == nil: return true // t β π€ == true } // β β x β π€ u := t if x.tilde { u = under(u) } return Identical(x.typ, u) } // subsetOf reports whether x β y. func (x *term) subsetOf(y *term) bool { // easy cases switch { case x == nil: return true // β β y == true case y == nil: return false // x β β == false since x != β case y.typ == nil: return true // x β π€ == true case x.typ == nil: return false // π€ β y == false since y != π€ } // β β x, y β π€ if x.disjoint(y) { return false // x β y == false if x β© y == β } // x.typ == y.typ // ~t β ~t == true // ~t β T == false // T β ~t == true // T β T == true return !x.tilde || y.tilde } // disjoint reports whether x β© y == β . // x.typ and y.typ must not be nil. func (x *term) disjoint(y *term) bool { if debug && (x.typ == nil || y.typ == nil) { panic("invalid argument(s)") } ux := x.typ if y.tilde { ux = under(ux) } uy := y.typ if x.tilde { uy = under(uy) } return !Identical(ux, uy) }