Ticket #4 (new task)

Opened 1 year ago

Last modified 1 year ago

implement getters/setters

Reported by: dr2chase Assigned to: dr2chase
Priority: major Milestone:
Component: interpreter Version:
Keywords: Cc:

Change History

10/12/07 06:53:07 changed by dr2chase

The plan is to do this with rewriting.

Traits:

trait ... getter foo():T; end =>
trait ... g$foo():T; end

trait ... foo:T; end  =>
trait ... g$foo():T; end

trait ... hidden settable foo:T; end  =>
trait ... s$foo(t:T):(); end

trait ... setter foo(t:T):() end =>
trait ... s$foo(t:T):(); end

trait ... settable foo:T; end =>
trait ... s$foo(t:T):(); g$foo():T; end

trait ... setter foo(t:T):();  getter foo():T end  =>
trait ... s$foo(t:T):();            g$foo():T; end

Objects:

object ... getter foo():T = body; end =>
object ... g$foo():T = body; end

object ... foo:T=iv; end  =>
object ... g$foo():T = foo; foo:T=iv; end

object ... getter foo():T = body; foo:T=iv; end =>
object ... g$foo():T = body; foo:T=iv; end

object ... hidden settable foo:T=iv; end  =>
object ... s$foo(t:T):() = do foo := t end; foo:T=iv; end

object ... setter foo(t:T):() end  =>
object ... s$foo(t:T):(); end

object ... setter foo(t:T):(); foo:T=iv;  end  =>
object ... s$foo(t:T):(); foo:T=iv; end

object ... settable foo:T:=iv; end =>
object ... s$foo(t:T):(); g$foo():T; foo:T:=iv; end

object ... setter foo(t:T):(); getter foo():T end  =>
object ... s$foo(t:T):(); g$foo():T; end

object ... setter foo(t:T):(); getter foo():T; foo:T:=iv end  =>
object ... s$foo(t:T):(); g$foo():T; foo:T:=iv end

Gets. Lacking type info, for now we assume explicit parentheses to indicate invocation of an arrow-typed field.

 ... this.that ... => 
 ... this.g$that() ...
 
 ... this.that() ... => 
 ... this.that() ... (* method invocation *)

 (... this).that() ... => 
 (... g$this()).that() ... (* arrow-typed field *)

Sets

 this.that := x => 
 this.s$that(x)

10/12/07 07:31:37 changed by dr2chase

Note, also, that there are rewritings in place that will change once proper type information and proper (dotted) import information is available.

11/09/07 12:36:44 changed by jmaessen

See also #43, which ought to work when getters have been implemented.