| 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 9718a21d5385dabe094ed0055463990df120fae8..018360e822a435e904507164539a9ae71a650c15 100644 | 
| --- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart | 
| +++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart | 
| @@ -811,7 +811,8 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { | 
| debugEvent("endLiteralString"); | 
| if (interpolationCount == 0) { | 
| Token token = pop(); | 
| -      push(new StringLiteral(unescapeString(token.lexeme))); | 
| +      push(new StringLiteral(unescapeString(token.lexeme)) | 
| +        ..fileOffset = token.charOffset); | 
| } else { | 
| List parts = popList(1 + interpolationCount * 2); | 
| Token first = parts.first; | 
| @@ -873,7 +874,8 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { | 
| @override | 
| void handleLiteralInt(Token token) { | 
| debugEvent("LiteralInt"); | 
| -    push(new IntLiteral(int.parse(token.lexeme))); | 
| +    push( | 
| +        new IntLiteral(int.parse(token.lexeme))..fileOffset = token.charOffset); | 
| } | 
|  | 
| @override | 
| @@ -1113,19 +1115,19 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { | 
| debugEvent("LiteralBool"); | 
| bool value = optional("true", token); | 
| assert(value || optional("false", token)); | 
| -    push(new BoolLiteral(value)); | 
| +    push(new BoolLiteral(value)..fileOffset = token.charOffset); | 
| } | 
|  | 
| @override | 
| void handleLiteralDouble(Token token) { | 
| debugEvent("LiteralDouble"); | 
| -    push(new DoubleLiteral(double.parse(token.lexeme))); | 
| +    push(new DoubleLiteral(double.parse(token.lexeme))..fileOffset = token.charOffset); | 
| } | 
|  | 
| @override | 
| void handleLiteralNull(Token token) { | 
| debugEvent("LiteralNull"); | 
| -    push(new NullLiteral()); | 
| +    push(new NullLiteral()..fileOffset = token.charOffset); | 
| } | 
|  | 
| @override | 
| @@ -2080,8 +2082,12 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { | 
| exitLocalScope(); | 
| List<Label> labels = pop(); | 
| List<Expression> expressions = pop(); | 
| -    push(new SwitchCase(expressions, block, isDefault: defaultKeyword != null) | 
| -      ..fileOffset = firstToken.charOffset); | 
| +    List<int> expressionOffsets = <int>[]; | 
| +    for (Expression expression in expressions) { | 
| +      expressionOffsets.add(expression.fileOffset); | 
| +    } | 
| +    push(new SwitchCase(expressions, expressionOffsets, block, | 
| +        isDefault: defaultKeyword != null)..fileOffset = firstToken.charOffset); | 
| push(labels); | 
| } | 
|  | 
|  |