+destructor_body
+ : method_body
+ ;
+
+constructor_body
+ : block_prepared
+ | SEMICOLON { current_block = null; $$ = null; }
+ | ARROW
+ {
+ if (lang_version < LanguageVersion.V_7) {
+ FeatureIsNotAvailable (GetLocation ($1), "expression body constructor");
+ }
+
+ ++lexer.parsing_block;
+ }
+ expression SEMICOLON
+ {
+ lexer.parsing_block = 0;
+ current_block.AddStatement (new ContextualReturn ((Expression) $3));
+ var b = end_block (GetLocation ($4));
+ b.IsCompilerGenerated = true;
+ $$ = b;
+ current_block = null;
+ }
+ ;
+