/source/core/ast/Type.ooc

http://github.com/nddrylliog/oc · Unknown · 52 lines · 27 code · 25 blank · 0 comment · 0 complexity · 519d6db7341ccd5e807dba88960158d8 MD5 · raw file

  1. import Node, FuncDecl
  2. import middle/Resolver
  3. Type: abstract class extends Node {
  4. void?: func -> Bool { false }
  5. }
  6. BaseType: class extends Type {
  7. resolved := false
  8. name: String { get set }
  9. init: func (=name) {}
  10. resolve: func (task: Task) {
  11. resolved = true
  12. }
  13. toString: func -> String { name }
  14. }
  15. VoidType: class extends BaseType {
  16. init: func {
  17. super("void")
  18. }
  19. void?: func -> Bool { true }
  20. }
  21. FuncType: class extends Type {
  22. proto: FuncDecl { get set }
  23. init: func (=proto) {}
  24. // well, nothing to do
  25. resolve: func (task: Task) {}
  26. toString: func -> String { "Func " + proto toString() }
  27. }