fork download
  1. class Outer {
  2. var outerValue: String = "I'm the outer value"
  3.  
  4. // Non-static inner class
  5. class Inner
  6. {
  7. function showOuterValue(): String
  8. {
  9. return "Inner sees: ${outerValue}"
  10. }
  11. }
  12.  
  13. function createInner(): Inner
  14. {
  15. return new Inner()
  16. }
  17.  
  18. function createStaticInner(): StaticInner
  19. {
  20. return new StaticInner()
  21. }
  22. }
  23.  
  24. // Test runner
  25. function main()
  26. {
  27. var outer = new Outer()
  28. var inner = outer.createInner()
  29. print(inner.showOuterValue()) // Should access outer's value
  30.  
  31. var staticInner = Outer.createStaticInner()
  32. print(staticInner.greet()) // Static inner class method
  33.  
  34. // Direct access to non-static inner
  35. var directInner = new Outer().new Inner()
  36. print(directInner.showOuterValue())
  37. }
Success #stdin #stdout #stderr 4.52s 166200KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
gw.lang.parser.exceptions.ParseResultsException: prog.gosu

Errors: 

"StaticInner" is not a valid type. [line:18 col:33] in
line 17: 
line 18:   function createStaticInner(): StaticInner 
line 19:   {
Line Number: 18  Column: 33

"StaticInner" is not a valid type. [line:20 col:16] in
line 19:   {
line 20:     return new StaticInner()
line 21:   } 
Expected Type: StaticInner
Line Number: 20  Column: 16

Function "createStaticInner" is not static on class Type<Outer> [line:31 col:21] in
line 30: 
line 31:   var staticInner = Outer.createStaticInner()
line 32:   print(staticInner.greet())      // Static inner class method
Line Number: 31  Column: 21

Could not resolve symbol for : staticInner [line:32 col:9] in
line 31:   var staticInner = Outer.createStaticInner()
line 32:   print(staticInner.greet())      // Static inner class method
line 33:  
Expected Type: Object
Line Number: 32  Column: 9

No property descriptor found for property, new, on class, _nopackage_.prog.Outer [line:35 col:21] in
line 34:   // Direct access to non-static inner
line 35:   var directInner = new Outer().new Inner()
line 36:   print(directInner.showOuterValue())
Line Number: 35  Column: 21

No function defined for Inner. [line:35 col:37] in
line 34:   // Direct access to non-static inner
line 35:   var directInner = new Outer().new Inner()
line 36:   print(directInner.showOuterValue())
Line Number: 35  Column: 37

Could not resolve symbol for : directInner [line:36 col:9] in
line 35:   var directInner = new Outer().new Inner()
line 36:   print(directInner.showOuterValue())
line 37: } 
Expected Type: Object
Line Number: 36  Column: 9



Warnings: 

Improper use of keyword, outer [line:27 col:7] in
line 26: {
line 27:   var outer = new Outer()
line 28:   var inner = outer.createInner()
Line Number: 27  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)