fork download
  1. class Outer {
  2. var outerValue: String = "I'm the outer value"
  3.  
  4. // Static nested class
  5. static 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. static 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 4.29s 164372KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
gw.lang.parser.exceptions.ParseResultsException: prog.gosu

Errors: 

The 'static' modifier is not allowed here. [line:9 col:3] in
line  8:     }
line  9:   }
line 10: 
Line Number: 9  Column: 3

The 'static' modifier is not allowed here. [line:24 col:3] in
line 23:     return new StaticInner()
line 24:   }
line 25: }
Line Number: 24  Column: 3

Cannot instantiate a non-static class here. [line:23 col:16] in
line 22:   static function createStaticInner(): StaticInner {
line 23:     return new StaticInner()
line 24:   }
Line Number: 23  Column: 16



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)