For @property, the return type is inferred even without the auto return type: struct S { @property p() { // missing bool/auto return true; } } void main() { S s; static assert(is(typeof(s.p) == bool)); // ok }
This also breaks creation of import files. Notice the double @property: // D import file generated from 't.d' struct S { @property @property p() { return true; } } void main();
(In reply to comment #0) > For @property, the return type is inferred even without the auto return type: > > struct S { > @property p() { // missing bool/auto > return true; > } > } > void main() { > S s; > static assert(is(typeof(s.p) == bool)); // ok > } Maybe this is expected feature, but spec does not describe it. http://d-programming-language.org/declaration.html > Decl: > StorageClasses Decl > BasicType Declarators ; > BasicType Declarator FunctionBody > AutoDeclaration (In reply to comment #1) > This also breaks creation of import files. Notice the double @property: > > // D import file generated from 't.d' > struct S > { > @property @property p() > { > return true; > } > } > void main(); This is same as issue 6360.
So where are we with this? Is this a "feature not a bug"?
The spec has been updated to list `Property` under `StorageClass`: https://dlang.org/spec/declaration.html#StorageClass