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. // Static nested class
  14. static class StaticInner
  15. {
  16. function greet(): String
  17. {
  18. return "Hello from StaticInner"
  19. }
  20. }
  21.  
  22. function createInner(): Inner
  23. {
  24. return new Inner()
  25. }
  26.  
  27. function createStaticInner(): StaticInner
  28. {
  29. return new StaticInner()
  30. }
  31. }
  32.  
  33. // Test runner
  34. function main()
  35. {
  36. var outer = new Outer()
  37. var inner = outer.createInner()
  38. print(inner.showOuterValue()) // Should access outer's value
  39.  
  40. var staticInner = Outer.createStaticInner()
  41. print(staticInner.greet()) // Static inner class method
  42.  
  43. // Direct access to non-static inner
  44. var directInner = new Outer().new Inner()
  45. print(directInner.showOuterValue())
  46. }
  47.  
Success #stdin #stdout #stderr 3.37s 170392KB
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:20 col:3] in
line 19:     }
line 20:   }
line 21: 
Line Number: 20  Column: 3

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

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

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

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

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



Warnings: 

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