| 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 library native; | 5 library native; | 
| 6 | 6 | 
| 7 import 'dart:uri'; | 7 import 'dart:uri'; | 
| 8 import 'dart2jslib.dart' hide SourceString; | 8 import 'dart2jslib.dart' hide SourceString; | 
| 9 import 'elements/elements.dart'; | 9 import 'elements/elements.dart'; | 
| 10 import 'js_backend/js_backend.dart'; | 10 import 'js_backend/js_backend.dart'; | 
| (...skipping 805 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 816     // TODO(ngeoffray): For static methods, we could pass a method with a | 816     // TODO(ngeoffray): For static methods, we could pass a method with a | 
| 817     // defined arity. | 817     // defined arity. | 
| 818     Element helper = builder.interceptors.getClosureConverter(); | 818     Element helper = builder.interceptors.getClosureConverter(); | 
| 819     builder.pushInvokeHelper2(helper, local, arity); | 819     builder.pushInvokeHelper2(helper, local, arity); | 
| 820     HInstruction closure = builder.pop(); | 820     HInstruction closure = builder.pop(); | 
| 821     return closure; | 821     return closure; | 
| 822   } | 822   } | 
| 823 | 823 | 
| 824   // Check which pattern this native method follows: | 824   // Check which pattern this native method follows: | 
| 825   // 1) foo() native; | 825   // 1) foo() native; | 
| 826   //      hasBody = false, isRedirecting = false | 826   //      hasBody = false | 
| 827   // 2) foo() native "bar"; | 827   // 2) foo() native "bar"; | 
| 828   //      hasBody = false, isRedirecting = true, no longer supported. | 828   //      No longer supported, this is now done with @JSName('foo') and case 1. | 
| 829   // 3) foo() native "return 42"; | 829   // 3) foo() native "return 42"; | 
| 830   //      hasBody = true, isRedirecting = false | 830   //      hasBody = true | 
| 831   bool hasBody = false; | 831   bool hasBody = false; | 
| 832   assert(element.isNative()); | 832   assert(element.isNative()); | 
| 833   String nativeMethodName = element.nativeName(); | 833   String nativeMethodName = element.nativeName(); | 
| 834   if (nativeBody != null) { | 834   if (nativeBody != null) { | 
| 835     LiteralString jsCode = nativeBody.asLiteralString(); | 835     LiteralString jsCode = nativeBody.asLiteralString(); | 
| 836     String str = jsCode.dartString.slowToString(); | 836     String str = jsCode.dartString.slowToString(); | 
| 837     if (nativeRedirectionRegExp.hasMatch(str)) { | 837     if (nativeRedirectionRegExp.hasMatch(str)) { | 
| 838       compiler.cancel("Deprecated syntax, use @JSName('name') instead.", | 838       compiler.cancel("Deprecated syntax, use @JSName('name') instead.", | 
| 839                       node: nativeBody); | 839                       node: nativeBody); | 
| 840     } | 840     } | 
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 901         builder.add(new HForeign( | 901         builder.add(new HForeign( | 
| 902             new DartString.literal('${parameter.name.slowToString()} = #'), | 902             new DartString.literal('${parameter.name.slowToString()} = #'), | 
| 903             const LiteralDartString('void'), | 903             const LiteralDartString('void'), | 
| 904             <HInstruction>[jsClosure])); | 904             <HInstruction>[jsClosure])); | 
| 905       } | 905       } | 
| 906     }); | 906     }); | 
| 907     LiteralString jsCode = nativeBody.asLiteralString(); | 907     LiteralString jsCode = nativeBody.asLiteralString(); | 
| 908     builder.push(new HForeign.statement(jsCode.dartString, <HInstruction>[])); | 908     builder.push(new HForeign.statement(jsCode.dartString, <HInstruction>[])); | 
| 909   } | 909   } | 
| 910 } | 910 } | 
| OLD | NEW | 
|---|