| // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // @dart = 2.7 |
| |
| import 'dart:html'; |
| |
| /*member: main:[]*/ |
| main() { |
| document.createElement(CustomElement.tag); |
| newCustom(); |
| newCustomCreated(); |
| newNormal(); |
| newNormalCreated(); |
| } |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // Create a custom element. The factory is inlined but the generative |
| // constructor isn't. |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| /*member: newCustom:[]*/ |
| @pragma('dart2js:noInline') |
| newCustom() { |
| new CustomElement(); |
| } |
| |
| /*member: newCustomCreated:[]*/ |
| @pragma('dart2js:noInline') |
| newCustomCreated() { |
| new CustomElement.created(); |
| } |
| |
| class CustomElement extends HtmlElement { |
| static final tag = 'x-foo'; |
| |
| /*member: CustomElement.:[newCustom:CustomElement]*/ |
| factory CustomElement() => new Element.tag(tag); |
| |
| /*member: CustomElement.created:[]*/ |
| CustomElement.created() : super.created() { |
| print('boo'); |
| } |
| } |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // Create a normal class, similar to a custom element. Both the factory and |
| // the generative constructor are inlined. |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| /*member: newNormal:[]*/ |
| @pragma('dart2js:noInline') |
| newNormal() { |
| new NormalElement(); |
| } |
| |
| /*member: newNormalCreated:[]*/ |
| @pragma('dart2js:noInline') |
| newNormalCreated() { |
| new NormalElement.created(); |
| } |
| |
| class NormalElement { |
| /*member: NormalElement.:[newNormal:NormalElement]*/ |
| factory NormalElement() => null; |
| |
| /*member: NormalElement.created:[newNormalCreated+,newNormalCreated:NormalElement]*/ |
| NormalElement.created() { |
| print('foo'); |
| } |
| } |