OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 /// ----------------------------------------------------------------------- | 5 /// ----------------------------------------------------------------------- |
6 /// ERROR HANDLING | 6 /// ERROR HANDLING |
7 /// ----------------------------------------------------------------------- | 7 /// ----------------------------------------------------------------------- |
8 /// | 8 /// |
9 /// As a rule of thumb, errors that can be detected statically are handled by | 9 /// As a rule of thumb, errors that can be detected statically are handled by |
10 /// the frontend, typically by translating the erroneous code into a 'throw' or | 10 /// the frontend, typically by translating the erroneous code into a 'throw' or |
(...skipping 3062 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3073 } | 3073 } |
3074 transformList(cases, v, this); | 3074 transformList(cases, v, this); |
3075 } | 3075 } |
3076 } | 3076 } |
3077 | 3077 |
3078 /// A group of `case` clauses and/or a `default` clause. | 3078 /// A group of `case` clauses and/or a `default` clause. |
3079 /// | 3079 /// |
3080 /// This is a potential target of [ContinueSwitchStatement]. | 3080 /// This is a potential target of [ContinueSwitchStatement]. |
3081 class SwitchCase extends TreeNode { | 3081 class SwitchCase extends TreeNode { |
3082 final List<Expression> expressions; | 3082 final List<Expression> expressions; |
| 3083 final List<int> expressionOffsets; |
3083 Statement body; | 3084 Statement body; |
3084 bool isDefault; | 3085 bool isDefault; |
3085 | 3086 |
3086 SwitchCase(this.expressions, this.body, {this.isDefault: false}) { | 3087 SwitchCase(this.expressions, this.expressionOffsets, this.body, |
| 3088 {this.isDefault: false}) { |
3087 setParents(expressions, this); | 3089 setParents(expressions, this); |
3088 body?.parent = this; | 3090 body?.parent = this; |
3089 } | 3091 } |
3090 | 3092 |
3091 SwitchCase.defaultCase(this.body) | 3093 SwitchCase.defaultCase(this.body) |
3092 : isDefault = true, | 3094 : isDefault = true, |
3093 expressions = <Expression>[] { | 3095 expressions = <Expression>[], |
| 3096 expressionOffsets = <int>[] { |
3094 body?.parent = this; | 3097 body?.parent = this; |
3095 } | 3098 } |
3096 | 3099 |
3097 SwitchCase.empty() | 3100 SwitchCase.empty() |
3098 : expressions = <Expression>[], | 3101 : expressions = <Expression>[], |
| 3102 expressionOffsets = <int>[], |
3099 body = null, | 3103 body = null, |
3100 isDefault = false; | 3104 isDefault = false; |
3101 | 3105 |
3102 accept(TreeVisitor v) => v.visitSwitchCase(this); | 3106 accept(TreeVisitor v) => v.visitSwitchCase(this); |
3103 | 3107 |
3104 visitChildren(Visitor v) { | 3108 visitChildren(Visitor v) { |
3105 visitList(expressions, v); | 3109 visitList(expressions, v); |
3106 body?.accept(v); | 3110 body?.accept(v); |
3107 } | 3111 } |
3108 | 3112 |
(...skipping 987 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4096 /// library has not been assigned a canonical name yet. | 4100 /// library has not been assigned a canonical name yet. |
4097 /// | 4101 /// |
4098 /// Returns `null` if the library is `null`. | 4102 /// Returns `null` if the library is `null`. |
4099 CanonicalName getCanonicalNameOfLibrary(Library library) { | 4103 CanonicalName getCanonicalNameOfLibrary(Library library) { |
4100 if (library == null) return null; | 4104 if (library == null) return null; |
4101 if (library.canonicalName == null) { | 4105 if (library.canonicalName == null) { |
4102 throw '$library has no canonical name'; | 4106 throw '$library has no canonical name'; |
4103 } | 4107 } |
4104 return library.canonicalName; | 4108 return library.canonicalName; |
4105 } | 4109 } |
OLD | NEW |