blob: acd94466f599f43abcc61ec0b66833c8108753a2 [file] [log] [blame]
Rémy Oudompheng2ece2f52012-02-18 22:15:42 +01001// run
Robert Griesemere35139a2008-09-10 14:21:42 -07002
3// Copyright 2009 The Go Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
7package main
8
Russ Cox839a6842009-01-20 14:40:40 -08009type S struct {
Robert Griesemere35139a2008-09-10 14:21:42 -070010}
11
12func (p *S) M() {
Robert Griesemere35139a2008-09-10 14:21:42 -070013}
14
Russ Cox839a6842009-01-20 14:40:40 -080015type I interface {
Robert Griesemere35139a2008-09-10 14:21:42 -070016 M();
17}
18
19func main() {
20 var p *S = nil;
21 var i I = p; // this should be possible even though p is nil: we still know the type
22 i.M(); // should be possible since we know the type, and don't ever use the receiver
23}
24
25
26/*
27throw: ifaces2i: nil pointer
28SIGSEGV: segmentation violation
29Faulting address: 0x0
30pc: 0x1b7d
31
320x1b7d?zi
33 throw(30409, 0, 0, ...)
34 throw(0x76c9, 0x0, 0x0, ...)
350x207f?zi
36 sys·ifaces2i(31440, 0, 31480, ...)
37 sys·ifaces2i(0x7ad0, 0x7af8, 0x0, ...)
380x136f?zi
39 main·main(1, 0, 1606416424, ...)
40 main·main(0x1, 0x7fff5fbff828, 0x0, ...)
41
42rax 0x1
43rbx 0x1
44rcx 0x33b5
45rdx 0x0
46rdi 0x1
47rsi 0x7684
48rbp 0x7684
49rsp 0xafb8
50r8 0x0
51r9 0x0
52r10 0x1002
53r11 0x206
54r12 0x0
55r13 0x0
56r14 0x7c48
57r15 0xa000
58rip 0x1b7d
59rflags 0x10202
60cs 0x27
61fs 0x10
62gs 0x48
63*/