fork download
  1. class Outer {
  2. var outerValue: String = "I'm the outer value"
  3.  
  4. // Static nested class
  5. class StaticInner {
  6. function greet(): String {
  7. return "Hello from StaticInner"
  8. }
  9. }
  10.  
  11. // Simulated inner class (you must pass Outer reference)
  12. class Inner {
  13. function showOuterValue(): String {
  14. return "Inner sees: #outerValue"
  15. }
  16. }
  17.  
  18. function createInner(): Inner {
  19. return new Inner()
  20. }
  21.  
  22. function createStaticInner(): StaticInner {
  23. return new StaticInner()
  24. }
  25. }
  26.  
  27. // Test runner (can be in a script or Program class)
  28. function main() {
  29. var outer = new Outer()
  30. var inner = outer.createInner()
  31. print(inner.showOuterValue()) // ✅ Inner sees: I'm the outer value
  32.  
  33. var staticInner = Outer.createStaticInner()
  34. print(staticInner.greet()) // ✅ Hello from StaticInner
  35.  
  36. // Direct creation of inner class
  37. var directInner = outer.createInner()
  38. print(directInner.showOuterValue())
  39. }
  40.  
  41. main()
  42.  
Success #stdin #stdout #stderr 3.41s 168028KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
gw.lang.parser.exceptions.ParseResultsException: prog.gosu

Errors: 

Function "createStaticInner" is not static on class Type<Outer> [line:33 col:21] in
line 32: 
line 33:   var staticInner = Outer.createStaticInner()
line 34:   print(staticInner.greet())     // ? Hello from StaticInner
Line Number: 33  Column: 21

Could not resolve symbol for : staticInner [line:34 col:9] in
line 33:   var staticInner = Outer.createStaticInner()
line 34:   print(staticInner.greet())     // ? Hello from StaticInner
line 35:  
Expected Type: Object
Line Number: 34  Column: 9



Warnings: 

Improper use of keyword, outer [line:29 col:7] in
line 28: function main() {
line 29:   var outer = new Outer()
line 30:   var inner = outer.createInner()
Line Number: 29  Column: 7


	at gw.internal.gosu.parser.ParserBase.verifyParsedElement(ParserBase.java:292)
	at gw.internal.gosu.parser.ParserBase.verifyParsedElement(ParserBase.java:263)
	at gw.internal.gosu.parser.GosuClassParser.parseDefinitions(GosuClassParser.java:475)
	at gw.internal.gosu.parser.GosuClass.compileDefinitionsIfNeeded(GosuClass.java:1551)
	at gw.internal.gosu.parser.GosuClass.compileDefinitionsIfNeeded(GosuClass.java:1494)
	at gw.internal.gosu.parser.GosuClass.isValid(GosuClass.java:925)
	at gw.internal.gosu.parser.GosuProgram_Proxy.isValid(gw.internal.gosu.parser.GosuProgram_Proxy:2)
	at gw.internal.gosu.parser.GosuProgramParser.parseExpressionOrProgram(GosuProgramParser.java:229)
	at gw.lang.Gosu.runWithFile(Gosu.java:621)
	at gw.lang.Gosu.start(Gosu.java:140)
	at gw.lang.Gosu.main(Gosu.java:70)