| // UNREVIEWED |
| |
| // 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 noder |
| |
| type code interface { |
| marker() syncMarker |
| value() int |
| } |
| |
| type codeVal int |
| |
| func (c codeVal) marker() syncMarker { return syncVal } |
| func (c codeVal) value() int { return int(c) } |
| |
| const ( |
| valBool codeVal = iota |
| valString |
| valInt64 |
| valBigInt |
| valBigRat |
| valBigFloat |
| ) |
| |
| type codeType int |
| |
| func (c codeType) marker() syncMarker { return syncType } |
| func (c codeType) value() int { return int(c) } |
| |
| const ( |
| typeBasic codeType = iota |
| typeNamed |
| typePointer |
| typeSlice |
| typeArray |
| typeChan |
| typeMap |
| typeSignature |
| typeStruct |
| typeInterface |
| typeUnion |
| typeTypeParam |
| ) |
| |
| type codeObj int |
| |
| func (c codeObj) marker() syncMarker { return syncCodeObj } |
| func (c codeObj) value() int { return int(c) } |
| |
| const ( |
| objAlias codeObj = iota |
| objConst |
| objType |
| objFunc |
| objVar |
| objStub |
| ) |
| |
| type codeStmt int |
| |
| func (c codeStmt) marker() syncMarker { return syncStmt1 } |
| func (c codeStmt) value() int { return int(c) } |
| |
| const ( |
| stmtEnd codeStmt = iota |
| stmtLabel |
| stmtBlock |
| stmtExpr |
| stmtSend |
| stmtAssign |
| stmtAssignOp |
| stmtIncDec |
| stmtBranch |
| stmtCall |
| stmtReturn |
| stmtIf |
| stmtFor |
| stmtSwitch |
| stmtSelect |
| |
| // TODO(mdempsky): Remove after we don't care about toolstash -cmp. |
| stmtTypeDeclHack |
| ) |
| |
| type codeExpr int |
| |
| func (c codeExpr) marker() syncMarker { return syncExpr } |
| func (c codeExpr) value() int { return int(c) } |
| |
| // TODO(mdempsky): Split expr into addr, for lvalues. |
| const ( |
| exprNone codeExpr = iota |
| exprConst |
| exprType // type expression |
| exprLocal // local variable |
| exprName // global variable or function |
| exprBlank |
| exprCompLit |
| exprFuncLit |
| exprSelector |
| exprIndex |
| exprSlice |
| exprAssert |
| exprUnaryOp |
| exprBinaryOp |
| exprCall |
| exprConvert |
| ) |
| |
| type codeDecl int |
| |
| func (c codeDecl) marker() syncMarker { return syncDecl } |
| func (c codeDecl) value() int { return int(c) } |
| |
| const ( |
| declEnd codeDecl = iota |
| declFunc |
| declMethod |
| declVar |
| declOther |
| ) |