| Basic test of implementation query. |
| |
| -- go.mod -- |
| module example.com |
| go 1.12 |
| |
| -- implementation/implementation.go -- |
| package implementation |
| |
| import "example.com/other" |
| |
| type ImpP struct{} //@loc(ImpP, "ImpP"),implementation("ImpP", Laugher, OtherLaugher) |
| |
| func (*ImpP) Laugh() { //@loc(LaughP, "Laugh"),implementation("Laugh", Laugh, OtherLaugh) |
| } |
| |
| type ImpS struct{} //@loc(ImpS, "ImpS"),implementation("ImpS", Laugher, OtherLaugher) |
| |
| func (ImpS) Laugh() { //@loc(LaughS, "Laugh"),implementation("Laugh", Laugh, OtherLaugh) |
| } |
| |
| type Laugher interface { //@loc(Laugher, "Laugher"),implementation("Laugher", ImpP, OtherImpP, ImpS, OtherImpS, embedsImpP) |
| Laugh() //@loc(Laugh, "Laugh"),implementation("Laugh", LaughP, OtherLaughP, LaughS, OtherLaughS) |
| } |
| |
| type Foo struct { //@implementation("Foo", Joker) |
| other.Foo |
| } |
| |
| type Joker interface { //@loc(Joker, "Joker") |
| Joke() //@loc(Joke, "Joke"),implementation("Joke", ImpJoker) |
| } |
| |
| type cryer int //@implementation("cryer", Cryer) |
| |
| func (cryer) Cry(other.CryType) {} //@loc(CryImpl, "Cry"),implementation("Cry", Cry) |
| |
| type Empty interface{} //@implementation("Empty") |
| |
| var _ interface{ Joke() } //@implementation("Joke", ImpJoker) |
| |
| type embedsImpP struct { //@loc(embedsImpP, "embedsImpP") |
| ImpP //@implementation("ImpP", Laugher, OtherLaugher) |
| } |
| |
| -- other/other.go -- |
| package other |
| |
| type ImpP struct{} //@loc(OtherImpP, "ImpP") |
| |
| func (*ImpP) Laugh() { //@loc(OtherLaughP, "Laugh") |
| } |
| |
| type ImpS struct{} //@loc(OtherImpS, "ImpS") |
| |
| func (ImpS) Laugh() { //@loc(OtherLaughS, "Laugh") |
| } |
| |
| type ImpI interface { //@loc(OtherLaugher, "ImpI") |
| Laugh() //@loc(OtherLaugh, "Laugh") |
| } |
| |
| type Foo struct { //@implementation("Foo", Joker) |
| } |
| |
| func (Foo) Joke() { //@loc(ImpJoker, "Joke"),implementation("Joke", Joke) |
| } |
| |
| type CryType int |
| |
| type Cryer interface { //@loc(Cryer, "Cryer") |
| Cry(CryType) //@loc(Cry, "Cry"),implementation("Cry", CryImpl) |
| } |