Files
sdk/pkg/compiler/test/inference/data/optimizer_hints.dart
T
Mayank Patke 553ac951b3 [dart2js] Add indexable bits to powerset.
Change-Id: I5d4c0b4d15a05cfc30d87003785ca841c46b1a0f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/426583
Reviewed-by: Stephen Adams <sra@google.com>
2025-05-07 19:18:38 -07:00

63 lines
2.3 KiB
Dart

// 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.
/*member: main:[null|powerset={null}]*/
main() {
assumeDynamic();
notAssumeDynamic();
trustReturnTypeString();
trustParameterTypeString();
}
////////////////////////////////////////////////////////////////////////////////
// Use annotation to assume parameter of [_assumeDynamic] is 'dynamic', i.e.
// could be any object, regardless of actuall call sites.
//
// [_assumeDynamic] is used in several tests below to force inference to create
// the 'dynamic' type.
////////////////////////////////////////////////////////////////////////////////
/*member: _assumeDynamic:[null|subclass=Object|powerset={null}{IN}{GFUO}{IMN}]*/
@pragma('dart2js:assumeDynamic')
_assumeDynamic(/*[null|subclass=Object|powerset={null}{IN}{GFUO}{IMN}]*/ o) =>
o;
/*member: assumeDynamic:[null|powerset={null}]*/
assumeDynamic() {
_assumeDynamic(0);
}
////////////////////////////////////////////////////////////////////////////////
// As above but without the annotation.
////////////////////////////////////////////////////////////////////////////////
/*member: _notAssumeDynamic:[exact=JSUInt31|powerset={I}{O}{N}]*/
_notAssumeDynamic(/*[exact=JSUInt31|powerset={I}{O}{N}]*/ o) => o;
/*member: notAssumeDynamic:[null|powerset={null}]*/
notAssumeDynamic() {
_notAssumeDynamic(0);
}
////////////////////////////////////////////////////////////////////////////////
// No annotation is needed to trust return type annotation.
////////////////////////////////////////////////////////////////////////////////
/*member: trustReturnTypeString:[exact=JSString|powerset={I}{O}{I}]*/
String trustReturnTypeString() {
return _assumeDynamic(0);
}
////////////////////////////////////////////////////////////////////////////////
// No annotation is needed to trust parameter type annotation.
////////////////////////////////////////////////////////////////////////////////
/*member: _trustParameterTypeString:[null|powerset={null}]*/
_trustParameterTypeString(String /*[exact=JSString|powerset={I}{O}{I}]*/ o) {}
/*member: trustParameterTypeString:[null|powerset={null}]*/
trustParameterTypeString() {
_trustParameterTypeString(_assumeDynamic(0));
}