DIP4: Properties

Chad J chadjoan at __spam.is.bad__gmail.com
Fri Jul 24 11:40:15 PDT 2009


Nick Sabalausky wrote:
>  An alternate usage/definition syntax for properties.
> 
> http://prowiki.org/wiki4d/wiki.cgi?LanguageDevel/DIPs/DIP4
> 
> Note that there are a few parts marked NEED HELP, that could use assistance 
> from someone with more expertise in this than me.
> 
> 

Have you checked out haXe's syntax for properties?
http://haxe.org/ref/properties

It's not very sugary, but it doesn't add new keywords and it handles
inheritance nicely (to change the prop's behavior in a subclass, just
inherit its methods).

The other caveat I can think of is that the grammar might need to change
a bit before haXe's properties could be used in D, mostly because haXe's
declarations are like this:
var Identifier : Type;
whereas D does decls like so:
Type Identifier

So perhaps we could have a grammar like this?

PropertyDecl:
	Type Identifier '{' Getter ',' Setter '}' ';'

Getter:
	null
	default
	FunctionIdentifier

Setter:
	null
	default
	FunctionIdentifier

At some point (semantic analysis?) the compiler needs to make sure the
functions used in the property have the correct signature.  Type foo();
for getter, Type foo(Type); for setter.

Something like
int foo{default,default};
could be optimized into
int foo;
though it should otherwise have the semantics of a property and not of a
field (e.g. &foo is not allowed or you get a special property struct or
somesuch).

I also second the importance of whatever Andrei was talking about with
respect to properties in some thread a while ago.  It was something
about potentially needing 3 different accessors for a property due to
some inconsistency or potential for pessimization.  I forget what
exactly.  I remember him having difficulty fitting properties into D2's
setup for generic algorithms.  It would be nice to get that right.



More information about the Digitalmars-d mailing list