mirror of
				https://github.com/golang/go.git
				synced 2025-11-04 02:30:57 +00:00 
			
		
		
		
	cmd/compile/internal/ir: prune down possible Ntype nodes
Ident, ParenExpr, SelectorExpr, and StarExpr used to need to be allowed as Ntypes for the old -G=0 type checker to represent some type expressions before type checking, but now they're only ever used to represent value expressions. Change-Id: Idd4901ae6149ecc81acf1c52de3bc914d9e73418 Reviewed-on: https://go-review.googlesource.com/c/go/+/403844 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com> Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
This commit is contained in:
		
							parent
							
								
									3abe8fe00b
								
							
						
					
					
						commit
						cf66a82b0b
					
				
					 3 changed files with 4 additions and 31 deletions
				
			
		| 
						 | 
				
			
			@ -439,16 +439,6 @@ func NewParenExpr(pos src.XPos, x Node) *ParenExpr {
 | 
			
		|||
func (n *ParenExpr) Implicit() bool     { return n.flags&miniExprImplicit != 0 }
 | 
			
		||||
func (n *ParenExpr) SetImplicit(b bool) { n.flags.set(miniExprImplicit, b) }
 | 
			
		||||
 | 
			
		||||
func (*ParenExpr) CanBeNtype() {}
 | 
			
		||||
 | 
			
		||||
// SetOTYPE changes n to be an OTYPE node returning t,
 | 
			
		||||
// like all the type nodes in type.go.
 | 
			
		||||
func (n *ParenExpr) SetOTYPE(t *types.Type) {
 | 
			
		||||
	n.op = OTYPE
 | 
			
		||||
	n.typ = t
 | 
			
		||||
	t.SetNod(n)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// A RawOrigExpr represents an arbitrary Go expression as a string value.
 | 
			
		||||
// When printed in diagnostics, the string value is written out exactly as-is.
 | 
			
		||||
type RawOrigExpr struct {
 | 
			
		||||
| 
						 | 
				
			
			@ -558,10 +548,6 @@ func (n *SelectorExpr) FuncName() *Name {
 | 
			
		|||
	return fn
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Before type-checking, bytes.Buffer is a SelectorExpr.
 | 
			
		||||
// After type-checking it becomes a Name.
 | 
			
		||||
func (*SelectorExpr) CanBeNtype() {}
 | 
			
		||||
 | 
			
		||||
// A SliceExpr is a slice expression X[Low:High] or X[Low:High:Max].
 | 
			
		||||
type SliceExpr struct {
 | 
			
		||||
	miniExpr
 | 
			
		||||
| 
						 | 
				
			
			@ -633,17 +619,6 @@ func NewStarExpr(pos src.XPos, x Node) *StarExpr {
 | 
			
		|||
func (n *StarExpr) Implicit() bool     { return n.flags&miniExprImplicit != 0 }
 | 
			
		||||
func (n *StarExpr) SetImplicit(b bool) { n.flags.set(miniExprImplicit, b) }
 | 
			
		||||
 | 
			
		||||
func (*StarExpr) CanBeNtype() {}
 | 
			
		||||
 | 
			
		||||
// SetOTYPE changes n to be an OTYPE node returning t,
 | 
			
		||||
// like all the type nodes in type.go.
 | 
			
		||||
func (n *StarExpr) SetOTYPE(t *types.Type) {
 | 
			
		||||
	n.op = OTYPE
 | 
			
		||||
	n.X = nil
 | 
			
		||||
	n.typ = t
 | 
			
		||||
	t.SetNod(n)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// A TypeAssertionExpr is a selector expression X.(Type).
 | 
			
		||||
// Before type-checking, the type is Ntype.
 | 
			
		||||
type TypeAssertExpr struct {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue