OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 part of resolution; | 5 part of resolution; |
6 | 6 |
7 abstract class TreeElements { | 7 abstract class TreeElements { |
8 Element get currentElement; | 8 Element get currentElement; |
9 Setlet<Node> get superUses; | 9 Setlet<Node> get superUses; |
10 | 10 |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
315 redirection = resolver.visitor.resolveConstructorRedirection(redirection); | 315 redirection = resolver.visitor.resolveConstructorRedirection(redirection); |
316 } | 316 } |
317 } | 317 } |
318 | 318 |
319 void checkMatchingPatchParameters(FunctionElement origin, | 319 void checkMatchingPatchParameters(FunctionElement origin, |
320 Link<Element> originParameters, | 320 Link<Element> originParameters, |
321 Link<Element> patchParameters) { | 321 Link<Element> patchParameters) { |
322 while (!originParameters.isEmpty) { | 322 while (!originParameters.isEmpty) { |
323 ParameterElementX originParameter = originParameters.head; | 323 ParameterElementX originParameter = originParameters.head; |
324 ParameterElementX patchParameter = patchParameters.head; | 324 ParameterElementX patchParameter = patchParameters.head; |
325 // TODO(johnniwinther): Remove the case for reassignment of | 325 originParameter.applyPatch(patchParameter); |
326 // [patch]/[origin] when resolution is ensure to be done only once. | |
327 assert(invariant(originParameter, originParameter.origin == null)); | |
328 assert(invariant(originParameter, | |
329 originParameter.patch == null || | |
330 originParameter.patch == patchParameter)); | |
331 originParameter.patch = patchParameter; | |
332 assert(invariant(patchParameter, | |
333 patchParameter.origin == null || | |
334 patchParameter.origin == originParameter)); | |
335 assert(invariant(patchParameter, patchParameter.patch == null)); | |
336 patchParameter.origin = originParameter; | |
337 DartType originParameterType = originParameter.computeType(compiler); | 326 DartType originParameterType = originParameter.computeType(compiler); |
338 DartType patchParameterType = patchParameter.computeType(compiler); | 327 DartType patchParameterType = patchParameter.computeType(compiler); |
339 if (originParameterType != patchParameterType) { | 328 if (originParameterType != patchParameterType) { |
340 compiler.reportError( | 329 compiler.reportError( |
341 originParameter.parseNode(compiler), | 330 originParameter.parseNode(compiler), |
342 MessageKind.PATCH_PARAMETER_TYPE_MISMATCH, | 331 MessageKind.PATCH_PARAMETER_TYPE_MISMATCH, |
343 {'methodName': origin.name, | 332 {'methodName': origin.name, |
344 'parameterName': originParameter.name, | 333 'parameterName': originParameter.name, |
345 'originParameterType': originParameterType, | 334 'originParameterType': originParameterType, |
346 'patchParameterType': patchParameterType}); | 335 'patchParameterType': patchParameterType}); |
(...skipping 4325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4672 TreeElements _treeElements; | 4661 TreeElements _treeElements; |
4673 | 4662 |
4674 bool get hasTreeElements => _treeElements != null; | 4663 bool get hasTreeElements => _treeElements != null; |
4675 | 4664 |
4676 TreeElements get treeElements { | 4665 TreeElements get treeElements { |
4677 assert(invariant(this, _treeElements !=null, | 4666 assert(invariant(this, _treeElements !=null, |
4678 message: "TreeElements have not been computed for $this.")); | 4667 message: "TreeElements have not been computed for $this.")); |
4679 return _treeElements; | 4668 return _treeElements; |
4680 } | 4669 } |
4681 } | 4670 } |
OLD | NEW |