| Index: pkg/front_end/lib/src/fasta/kernel/body_builder.dart
 | 
| diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
 | 
| index aded0f24e94f9df966a9c5c68e2c43067a04222c..5b1ad433d2eb734c540649ff2bd79604b94df9a9 100644
 | 
| --- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
 | 
| +++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
 | 
| @@ -1393,7 +1393,12 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
 | 
|      }
 | 
|      Identifier name = pop();
 | 
|      DartType type = pop();
 | 
| -    pop(); // Modifiers.
 | 
| +    int modifiers = Modifier.validate(pop());
 | 
| +    if (inCatchClause) {
 | 
| +      modifiers |= finalMask;
 | 
| +    }
 | 
| +    bool isConst = (modifiers & constMask) != 0;
 | 
| +    bool isFinal = (modifiers & finalMask) != 0;
 | 
|      ignore(Unhandled.Metadata);
 | 
|      VariableDeclaration variable;
 | 
|      if (!inCatchClause && functionNestingLevel == 0) {
 | 
| @@ -1417,7 +1422,10 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
 | 
|          }
 | 
|          type = field.target.type ?? const DynamicType();
 | 
|          variable = new VariableDeclaration(name.name,
 | 
| -            type: type, initializer: name.initializer);
 | 
| +            type: type,
 | 
| +            initializer: name.initializer,
 | 
| +            isFinal: isFinal,
 | 
| +            isConst: isConst)..fileOffset = name.fileOffset;
 | 
|        } else {
 | 
|          addCompileTimeError(
 | 
|              name.fileOffset, "'${name.name}' isn't a field in this class.");
 | 
| @@ -1425,7 +1433,9 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
 | 
|      }
 | 
|      variable ??= new VariableDeclaration(name.name,
 | 
|          type: type ?? const DynamicType(),
 | 
| -        initializer: name.initializer)..fileOffset = name.fileOffset;
 | 
| +        initializer: name.initializer,
 | 
| +        isFinal: isFinal,
 | 
| +        isConst: isConst)..fileOffset = name.fileOffset;
 | 
|      push(variable);
 | 
|    }
 | 
|  
 | 
| 
 |