| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 library dart2js.ir_builder_task; | 5 library dart2js.ir_builder_task; |
| 6 | 6 |
| 7 import '../closure.dart' as closurelib; | 7 import '../closure.dart' as closurelib; |
| 8 import '../closure.dart' hide ClosureScope; | 8 import '../closure.dart' hide ClosureScope; |
| 9 import '../common/names.dart' show |
| 10 Names, |
| 11 Selectors; |
| 9 import '../common/tasks.dart' show | 12 import '../common/tasks.dart' show |
| 10 CompilerTask; | 13 CompilerTask; |
| 11 import '../compiler.dart' show | 14 import '../compiler.dart' show |
| 12 Compiler; | 15 Compiler; |
| 13 import '../constants/expressions.dart'; | 16 import '../constants/expressions.dart'; |
| 14 import '../dart_types.dart'; | 17 import '../dart_types.dart'; |
| 15 import '../diagnostics/invariant.dart' show | 18 import '../diagnostics/invariant.dart' show |
| 16 invariant; | 19 invariant; |
| 17 import '../elements/elements.dart'; | 20 import '../elements/elements.dart'; |
| 18 import '../elements/modelx.dart' show | 21 import '../elements/modelx.dart' show |
| (...skipping 1424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1443 setValue: (ir.Primitive result) { | 1446 setValue: (ir.Primitive result) { |
| 1444 irBuilder.buildDynamicSet( | 1447 irBuilder.buildDynamicSet( |
| 1445 target, setterSelector, elements.getTypeMask(node), result); | 1448 target, setterSelector, elements.getTypeMask(node), result); |
| 1446 }); | 1449 }); |
| 1447 } | 1450 } |
| 1448 return node.isConditional | 1451 return node.isConditional |
| 1449 ? irBuilder.buildIfNotNullSend(target, nested(helper)) | 1452 ? irBuilder.buildIfNotNullSend(target, nested(helper)) |
| 1450 : helper(); | 1453 : helper(); |
| 1451 } | 1454 } |
| 1452 | 1455 |
| 1453 ir.Primitive buildLocalNoSuchSetter(Local local, ir.Primitive value) { | 1456 ir.Primitive buildLocalNoSuchSetter(LocalElement local, ir.Primitive value) { |
| 1454 Selector selector = new Selector.setter(local.name, null); | 1457 Selector selector = new Selector.setter( |
| 1458 new Name(local.name, local.library, isSetter: true)); |
| 1455 return buildStaticNoSuchMethod(selector, [value]); | 1459 return buildStaticNoSuchMethod(selector, [value]); |
| 1456 } | 1460 } |
| 1457 | 1461 |
| 1458 @override | 1462 @override |
| 1459 ir.Primitive handleLocalCompounds( | 1463 ir.Primitive handleLocalCompounds( |
| 1460 ast.SendSet node, | 1464 ast.SendSet node, |
| 1461 LocalElement local, | 1465 LocalElement local, |
| 1462 CompoundRhs rhs, | 1466 CompoundRhs rhs, |
| 1463 arg, | 1467 arg, |
| 1464 {bool isSetterValid}) { | 1468 {bool isSetterValid}) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1476 if (isSetterValid) { | 1480 if (isSetterValid) { |
| 1477 irBuilder.buildLocalVariableSet(local, result); | 1481 irBuilder.buildLocalVariableSet(local, result); |
| 1478 } else { | 1482 } else { |
| 1479 return buildLocalNoSuchSetter(local, result); | 1483 return buildLocalNoSuchSetter(local, result); |
| 1480 } | 1484 } |
| 1481 }); | 1485 }); |
| 1482 } | 1486 } |
| 1483 | 1487 |
| 1484 ir.Primitive buildStaticNoSuchGetter(Element element) { | 1488 ir.Primitive buildStaticNoSuchGetter(Element element) { |
| 1485 return buildStaticNoSuchMethod( | 1489 return buildStaticNoSuchMethod( |
| 1486 new Selector.getter(element.name, element.library), | 1490 new Selector.getter(new Name(element.name, element.library)), |
| 1487 const <ir.Primitive>[]); | 1491 const <ir.Primitive>[]); |
| 1488 } | 1492 } |
| 1489 | 1493 |
| 1490 ir.Primitive buildStaticNoSuchSetter(Element element, ir.Primitive value) { | 1494 ir.Primitive buildStaticNoSuchSetter(Element element, ir.Primitive value) { |
| 1491 return buildStaticNoSuchMethod( | 1495 return buildStaticNoSuchMethod( |
| 1492 new Selector.setter(element.name, element.library), | 1496 new Selector.setter(new Name(element.name, element.library)), |
| 1493 <ir.Primitive>[value]); | 1497 <ir.Primitive>[value]); |
| 1494 } | 1498 } |
| 1495 | 1499 |
| 1496 @override | 1500 @override |
| 1497 ir.Primitive handleStaticCompounds( | 1501 ir.Primitive handleStaticCompounds( |
| 1498 ast.SendSet node, | 1502 ast.SendSet node, |
| 1499 Element getter, | 1503 Element getter, |
| 1500 CompoundGetter getterKind, | 1504 CompoundGetter getterKind, |
| 1501 Element setter, | 1505 Element setter, |
| 1502 CompoundSetter setterKind, | 1506 CompoundSetter setterKind, |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1528 case CompoundSetter.INVALID: | 1532 case CompoundSetter.INVALID: |
| 1529 // TODO(johnniwinther): Ensure [setter] is non null. | 1533 // TODO(johnniwinther): Ensure [setter] is non null. |
| 1530 return buildStaticNoSuchSetter( | 1534 return buildStaticNoSuchSetter( |
| 1531 setter != null ? setter : getter, result); | 1535 setter != null ? setter : getter, result); |
| 1532 } | 1536 } |
| 1533 }); | 1537 }); |
| 1534 } | 1538 } |
| 1535 | 1539 |
| 1536 ir.Primitive buildSuperNoSuchGetter(Element element, TypeMask mask) { | 1540 ir.Primitive buildSuperNoSuchGetter(Element element, TypeMask mask) { |
| 1537 return buildInstanceNoSuchMethod( | 1541 return buildInstanceNoSuchMethod( |
| 1538 new Selector.getter(element.name, element.library), | 1542 new Selector.getter(new Name(element.name, element.library)), |
| 1539 mask, | 1543 mask, |
| 1540 const <ir.Primitive>[]); | 1544 const <ir.Primitive>[]); |
| 1541 } | 1545 } |
| 1542 | 1546 |
| 1543 ir.Primitive buildSuperNoSuchSetter(Element element, | 1547 ir.Primitive buildSuperNoSuchSetter(Element element, |
| 1544 TypeMask mask, | 1548 TypeMask mask, |
| 1545 ir.Primitive value) { | 1549 ir.Primitive value) { |
| 1546 return buildInstanceNoSuchMethod( | 1550 return buildInstanceNoSuchMethod( |
| 1547 new Selector.setter(element.name, element.library), | 1551 new Selector.setter(new Name(element.name, element.library)), |
| 1548 mask, | 1552 mask, |
| 1549 <ir.Primitive>[value]); | 1553 <ir.Primitive>[value]); |
| 1550 } | 1554 } |
| 1551 | 1555 |
| 1552 @override | 1556 @override |
| 1553 ir.Primitive handleSuperCompounds( | 1557 ir.Primitive handleSuperCompounds( |
| 1554 ast.SendSet node, | 1558 ast.SendSet node, |
| 1555 Element getter, | 1559 Element getter, |
| 1556 CompoundGetter getterKind, | 1560 CompoundGetter getterKind, |
| 1557 Element setter, | 1561 Element setter, |
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1871 } | 1875 } |
| 1872 | 1876 |
| 1873 @override | 1877 @override |
| 1874 ir.Primitive visitClassTypeLiteralSet( | 1878 ir.Primitive visitClassTypeLiteralSet( |
| 1875 ast.SendSet node, | 1879 ast.SendSet node, |
| 1876 TypeConstantExpression constant, | 1880 TypeConstantExpression constant, |
| 1877 ast.Node rhs, _) { | 1881 ast.Node rhs, _) { |
| 1878 InterfaceType type = constant.type; | 1882 InterfaceType type = constant.type; |
| 1879 ClassElement element = type.element; | 1883 ClassElement element = type.element; |
| 1880 return buildStaticNoSuchMethod( | 1884 return buildStaticNoSuchMethod( |
| 1881 new Selector.setter(element.name, element.library), [visit(rhs)]); | 1885 new Selector.setter(element.memberName), |
| 1886 [visit(rhs)]); |
| 1882 } | 1887 } |
| 1883 | 1888 |
| 1884 @override | 1889 @override |
| 1885 ir.Primitive visitTypedefTypeLiteralSet( | 1890 ir.Primitive visitTypedefTypeLiteralSet( |
| 1886 ast.SendSet node, | 1891 ast.SendSet node, |
| 1887 TypeConstantExpression constant, | 1892 TypeConstantExpression constant, |
| 1888 ast.Node rhs, _) { | 1893 ast.Node rhs, _) { |
| 1889 TypedefType type = constant.type; | 1894 TypedefType type = constant.type; |
| 1890 TypedefElement element = type.element; | 1895 TypedefElement element = type.element; |
| 1891 return buildStaticNoSuchMethod( | 1896 return buildStaticNoSuchMethod( |
| 1892 new Selector.setter(element.name, element.library), [visit(rhs)]); | 1897 new Selector.setter(element.memberName), |
| 1898 [visit(rhs)]); |
| 1893 } | 1899 } |
| 1894 | 1900 |
| 1895 @override | 1901 @override |
| 1896 ir.Primitive visitTypeVariableTypeLiteralSet( | 1902 ir.Primitive visitTypeVariableTypeLiteralSet( |
| 1897 ast.SendSet node, | 1903 ast.SendSet node, |
| 1898 TypeVariableElement element, | 1904 TypeVariableElement element, |
| 1899 ast.Node rhs, _) { | 1905 ast.Node rhs, _) { |
| 1900 return buildStaticNoSuchMethod( | 1906 return buildStaticNoSuchMethod( |
| 1901 new Selector.setter(element.name, element.library), [visit(rhs)]); | 1907 new Selector.setter(element.memberName), [visit(rhs)]); |
| 1902 } | 1908 } |
| 1903 | 1909 |
| 1904 @override | 1910 @override |
| 1905 ir.Primitive visitDynamicTypeLiteralSet( | 1911 ir.Primitive visitDynamicTypeLiteralSet( |
| 1906 ast.SendSet node, | 1912 ast.SendSet node, |
| 1907 ConstantExpression constant, | 1913 ConstantExpression constant, |
| 1908 ast.Node rhs, _) { | 1914 ast.Node rhs, _) { |
| 1909 return buildStaticNoSuchMethod( | 1915 return buildStaticNoSuchMethod( |
| 1910 new Selector.setter('dynamic', null), [visit(rhs)]); | 1916 new Selector.setter(Names.dynamic_), [visit(rhs)]); |
| 1911 } | 1917 } |
| 1912 | 1918 |
| 1913 @override | 1919 @override |
| 1914 ir.Primitive visitAbstractClassConstructorInvoke( | 1920 ir.Primitive visitAbstractClassConstructorInvoke( |
| 1915 ast.NewExpression node, | 1921 ast.NewExpression node, |
| 1916 ConstructorElement element, | 1922 ConstructorElement element, |
| 1917 InterfaceType type, | 1923 InterfaceType type, |
| 1918 ast.NodeList arguments, | 1924 ast.NodeList arguments, |
| 1919 CallStructure callStructure, _) { | 1925 CallStructure callStructure, _) { |
| 1920 return buildAbstractClassInstantiationError(element.enclosingClass); | 1926 return buildAbstractClassInstantiationError(element.enclosingClass); |
| 1921 } | 1927 } |
| 1922 | 1928 |
| 1923 @override | 1929 @override |
| 1924 ir.Primitive handleFinalStaticFieldSet( | 1930 ir.Primitive handleFinalStaticFieldSet( |
| 1925 ast.SendSet node, | 1931 ast.SendSet node, |
| 1926 FieldElement field, | 1932 FieldElement field, |
| 1927 ast.Node rhs, _) { | 1933 ast.Node rhs, _) { |
| 1928 // TODO(asgerf): Include class name somehow for static class members? | 1934 // TODO(asgerf): Include class name somehow for static class members? |
| 1929 return buildStaticNoSuchMethod( | 1935 return buildStaticNoSuchMethod( |
| 1930 new Selector.setter(field.name, field.library), | 1936 new Selector.setter(field.memberName), |
| 1931 [visit(rhs)]); | 1937 [visit(rhs)]); |
| 1932 } | 1938 } |
| 1933 | 1939 |
| 1934 @override | 1940 @override |
| 1935 ir.Primitive visitFinalSuperFieldSet( | 1941 ir.Primitive visitFinalSuperFieldSet( |
| 1936 ast.SendSet node, | 1942 ast.SendSet node, |
| 1937 FieldElement field, | 1943 FieldElement field, |
| 1938 ast.Node rhs, _) { | 1944 ast.Node rhs, _) { |
| 1939 return buildInstanceNoSuchMethod( | 1945 return buildInstanceNoSuchMethod( |
| 1940 new Selector.setter(field.name, field.library), | 1946 new Selector.setter(field.memberName), |
| 1941 elements.getTypeMask(node), | 1947 elements.getTypeMask(node), |
| 1942 [visit(rhs)]); | 1948 [visit(rhs)]); |
| 1943 } | 1949 } |
| 1944 | 1950 |
| 1945 @override | 1951 @override |
| 1946 ir.Primitive handleImmutableLocalSet( | 1952 ir.Primitive handleImmutableLocalSet( |
| 1947 ast.SendSet node, | 1953 ast.SendSet node, |
| 1948 LocalElement local, | 1954 LocalElement local, |
| 1949 ast.Node rhs, _) { | 1955 ast.Node rhs, _) { |
| 1950 return buildStaticNoSuchMethod( | 1956 return buildStaticNoSuchMethod( |
| 1951 new Selector.setter(local.name, null), | 1957 new Selector.setter(new Name(local.name, local.library)), |
| 1952 [visit(rhs)]); | 1958 [visit(rhs)]); |
| 1953 } | 1959 } |
| 1954 | 1960 |
| 1955 @override | 1961 @override |
| 1956 ir.Primitive handleStaticFunctionSet( | 1962 ir.Primitive handleStaticFunctionSet( |
| 1957 ast.Send node, | 1963 ast.Send node, |
| 1958 MethodElement function, | 1964 MethodElement function, |
| 1959 ast.Node rhs, | 1965 ast.Node rhs, |
| 1960 _) { | 1966 _) { |
| 1961 return buildStaticNoSuchMethod( | 1967 return buildStaticNoSuchMethod( |
| 1962 new Selector.setter(function.name, function.library), | 1968 new Selector.setter(function.memberName), |
| 1963 [visit(rhs)]); | 1969 [visit(rhs)]); |
| 1964 } | 1970 } |
| 1965 | 1971 |
| 1966 @override | 1972 @override |
| 1967 ir.Primitive handleStaticGetterSet( | 1973 ir.Primitive handleStaticGetterSet( |
| 1968 ast.SendSet node, | 1974 ast.SendSet node, |
| 1969 FunctionElement getter, | 1975 GetterElement getter, |
| 1970 ast.Node rhs, | 1976 ast.Node rhs, |
| 1971 _) { | 1977 _) { |
| 1972 return buildStaticNoSuchMethod( | 1978 return buildStaticNoSuchMethod( |
| 1973 new Selector.setter(getter.name, getter.library), | 1979 new Selector.setter(getter.memberName), |
| 1974 [visit(rhs)]); | 1980 [visit(rhs)]); |
| 1975 } | 1981 } |
| 1976 | 1982 |
| 1977 @override | 1983 @override |
| 1978 ir.Primitive handleStaticSetterGet( | 1984 ir.Primitive handleStaticSetterGet( |
| 1979 ast.Send node, | 1985 ast.Send node, |
| 1980 FunctionElement setter, | 1986 SetterElement setter, |
| 1981 _) { | 1987 _) { |
| 1982 return buildStaticNoSuchMethod( | 1988 return buildStaticNoSuchMethod( |
| 1983 new Selector.getter(setter.name, setter.library), | 1989 new Selector.getter(setter.memberName), |
| 1984 []); | 1990 []); |
| 1985 } | 1991 } |
| 1986 | 1992 |
| 1987 @override | 1993 @override |
| 1988 ir.Primitive handleStaticSetterInvoke( | 1994 ir.Primitive handleStaticSetterInvoke( |
| 1989 ast.Send node, | 1995 ast.Send node, |
| 1990 FunctionElement setter, | 1996 SetterElement setter, |
| 1991 ast.NodeList arguments, | 1997 ast.NodeList arguments, |
| 1992 CallStructure callStructure, _) { | 1998 CallStructure callStructure, _) { |
| 1993 // Translate as a method call. | 1999 // Translate as a method call. |
| 1994 List<ir.Primitive> args = arguments.nodes.mapToList(visit); | 2000 List<ir.Primitive> args = arguments.nodes.mapToList(visit); |
| 1995 Name name = new Name(setter.name, setter.library); | |
| 1996 return buildStaticNoSuchMethod( | 2001 return buildStaticNoSuchMethod( |
| 1997 new Selector(SelectorKind.CALL, name, callStructure), | 2002 new Selector(SelectorKind.CALL, setter.memberName, callStructure), |
| 1998 args); | 2003 args); |
| 1999 } | 2004 } |
| 2000 | 2005 |
| 2001 @override | 2006 @override |
| 2002 ir.Primitive visitSuperGetterSet( | 2007 ir.Primitive visitSuperGetterSet( |
| 2003 ast.SendSet node, | 2008 ast.SendSet node, |
| 2004 FunctionElement getter, | 2009 GetterElement getter, |
| 2005 ast.Node rhs, | 2010 ast.Node rhs, |
| 2006 _) { | 2011 _) { |
| 2007 return buildInstanceNoSuchMethod( | 2012 return buildInstanceNoSuchMethod( |
| 2008 new Selector.setter(getter.name, getter.library), | 2013 new Selector.setter(getter.memberName), |
| 2009 elements.getTypeMask(node), | 2014 elements.getTypeMask(node), |
| 2010 [visit(rhs)]); | 2015 [visit(rhs)]); |
| 2011 } | 2016 } |
| 2012 | 2017 |
| 2013 @override | 2018 @override |
| 2014 ir.Primitive visitSuperMethodSet( | 2019 ir.Primitive visitSuperMethodSet( |
| 2015 ast.Send node, | 2020 ast.Send node, |
| 2016 MethodElement method, | 2021 MethodElement method, |
| 2017 ast.Node rhs, | 2022 ast.Node rhs, |
| 2018 _) { | 2023 _) { |
| 2019 return buildInstanceNoSuchMethod( | 2024 return buildInstanceNoSuchMethod( |
| 2020 new Selector.setter(method.name, method.library), | 2025 new Selector.setter(method.memberName), |
| 2021 elements.getTypeMask(node), | 2026 elements.getTypeMask(node), |
| 2022 [visit(rhs)]); | 2027 [visit(rhs)]); |
| 2023 } | 2028 } |
| 2024 | 2029 |
| 2025 @override | 2030 @override |
| 2026 ir.Primitive visitSuperSetterGet( | 2031 ir.Primitive visitSuperSetterGet( |
| 2027 ast.Send node, | 2032 ast.Send node, |
| 2028 FunctionElement setter, _) { | 2033 SetterElement setter, _) { |
| 2029 return buildInstanceNoSuchMethod( | 2034 return buildInstanceNoSuchMethod( |
| 2030 new Selector.setter(setter.name, setter.library), | 2035 new Selector.setter(setter.memberName), |
| 2031 elements.getTypeMask(node), | 2036 elements.getTypeMask(node), |
| 2032 []); | 2037 []); |
| 2033 } | 2038 } |
| 2034 | 2039 |
| 2035 @override | 2040 @override |
| 2036 ir.Primitive visitSuperSetterInvoke( | 2041 ir.Primitive visitSuperSetterInvoke( |
| 2037 ast.Send node, | 2042 ast.Send node, |
| 2038 FunctionElement setter, | 2043 SetterElement setter, |
| 2039 ast.NodeList arguments, | 2044 ast.NodeList arguments, |
| 2040 CallStructure callStructure, _) { | 2045 CallStructure callStructure, _) { |
| 2041 List<ir.Primitive> args = | 2046 List<ir.Primitive> args = |
| 2042 translateDynamicArguments(arguments, callStructure); | 2047 translateDynamicArguments(arguments, callStructure); |
| 2043 Name name = new Name(setter.name, setter.library); | |
| 2044 return buildInstanceNoSuchMethod( | 2048 return buildInstanceNoSuchMethod( |
| 2045 new Selector(SelectorKind.CALL, name, callStructure), | 2049 new Selector(SelectorKind.CALL, setter.memberName, callStructure), |
| 2046 elements.getTypeMask(node), | 2050 elements.getTypeMask(node), |
| 2047 args); | 2051 args); |
| 2048 } | 2052 } |
| 2049 | 2053 |
| 2050 ir.FunctionDefinition nullIfGiveup(ir.FunctionDefinition action()) { | 2054 ir.FunctionDefinition nullIfGiveup(ir.FunctionDefinition action()) { |
| 2051 try { | 2055 try { |
| 2052 return action(); | 2056 return action(); |
| 2053 } catch(e) { | 2057 } catch(e) { |
| 2054 if (e == ABORT_IRNODE_BUILDER) { | 2058 if (e == ABORT_IRNODE_BUILDER) { |
| 2055 return null; | 2059 return null; |
| (...skipping 1027 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3083 new CallStructure.unnamed(4), | 3087 new CallStructure.unnamed(4), |
| 3084 [receiver, name, argumentList, expectedArgumentNames]); | 3088 [receiver, name, argumentList, expectedArgumentNames]); |
| 3085 } | 3089 } |
| 3086 | 3090 |
| 3087 @override | 3091 @override |
| 3088 ir.Primitive buildInstanceNoSuchMethod(Selector selector, | 3092 ir.Primitive buildInstanceNoSuchMethod(Selector selector, |
| 3089 TypeMask mask, | 3093 TypeMask mask, |
| 3090 List<ir.Primitive> arguments) { | 3094 List<ir.Primitive> arguments) { |
| 3091 return irBuilder.buildDynamicInvocation( | 3095 return irBuilder.buildDynamicInvocation( |
| 3092 irBuilder.buildThis(), | 3096 irBuilder.buildThis(), |
| 3093 compiler.noSuchMethodSelector, | 3097 Selectors.noSuchMethod_, |
| 3094 mask, | 3098 mask, |
| 3095 [irBuilder.buildInvocationMirror(selector, arguments)]); | 3099 [irBuilder.buildInvocationMirror(selector, arguments)]); |
| 3096 } | 3100 } |
| 3097 | 3101 |
| 3098 @override | 3102 @override |
| 3099 ir.Primitive buildRuntimeError(String message) { | 3103 ir.Primitive buildRuntimeError(String message) { |
| 3100 return irBuilder.buildStaticFunctionInvocation( | 3104 return irBuilder.buildStaticFunctionInvocation( |
| 3101 backend.getThrowRuntimeError(), | 3105 backend.getThrowRuntimeError(), |
| 3102 new CallStructure.unnamed(1), | 3106 new CallStructure.unnamed(1), |
| 3103 [irBuilder.buildStringConstant(message)]); | 3107 [irBuilder.buildStringConstant(message)]); |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3364 if (compiler.backend.isForeign(function)) { | 3368 if (compiler.backend.isForeign(function)) { |
| 3365 return handleForeignCode(node, function, argumentList, callStructure); | 3369 return handleForeignCode(node, function, argumentList, callStructure); |
| 3366 } else { | 3370 } else { |
| 3367 return irBuilder.buildStaticFunctionInvocation(function, callStructure, | 3371 return irBuilder.buildStaticFunctionInvocation(function, callStructure, |
| 3368 translateStaticArguments(argumentList, function, callStructure), | 3372 translateStaticArguments(argumentList, function, callStructure), |
| 3369 sourceInformation: | 3373 sourceInformation: |
| 3370 sourceInformationBuilder.buildCall(node, node.selector)); | 3374 sourceInformationBuilder.buildCall(node, node.selector)); |
| 3371 } | 3375 } |
| 3372 } | 3376 } |
| 3373 } | 3377 } |
| OLD | NEW |