@@ -2006,6 +2006,13 @@ class ElementAnnotationImpl implements ElementAnnotation {
2006
2006
/// specific set of target element kinds.
2007
2007
static const String _TARGET_CLASS_NAME = 'Target' ;
2008
2008
2009
+ /// The name of the class used to mark a returned element as requiring use.
2010
+ static const String _USE_RESULT_CLASS_NAME = "UseResult" ;
2011
+
2012
+ /// The name of the top-level variable used to mark a returned element as
2013
+ /// requiring use.
2014
+ static const String _USE_RESULT_VARIABLE_NAME = "useResult" ;
2015
+
2009
2016
/// The name of the top-level variable used to mark a method as being
2010
2017
/// visible for templates.
2011
2018
static const String _VISIBLE_FOR_TEMPLATE_VARIABLE_NAME =
@@ -2118,6 +2125,12 @@ class ElementAnnotationImpl implements ElementAnnotation {
2118
2125
bool get isTarget => _isConstructor (
2119
2126
libraryName: _META_META_LIB_NAME , className: _TARGET_CLASS_NAME );
2120
2127
2128
+ @override
2129
+ bool get isUseResult =>
2130
+ _isConstructor (
2131
+ libraryName: _META_LIB_NAME , className: _USE_RESULT_CLASS_NAME ) ||
2132
+ _isPackageMetaGetter (_USE_RESULT_VARIABLE_NAME );
2133
+
2121
2134
@override
2122
2135
bool get isVisibleForTemplate => _isTopGetter (
2123
2136
libraryName: _NG_META_LIB_NAME ,
@@ -2497,6 +2510,18 @@ abstract class ElementImpl implements Element {
2497
2510
return false ;
2498
2511
}
2499
2512
2513
+ @override
2514
+ bool get hasUseResult {
2515
+ final metadata = this .metadata;
2516
+ for (var i = 0 ; i < metadata.length; i++ ) {
2517
+ var annotation = metadata[i];
2518
+ if (annotation.isUseResult) {
2519
+ return true ;
2520
+ }
2521
+ }
2522
+ return false ;
2523
+ }
2524
+
2500
2525
@override
2501
2526
bool get hasVisibleForTemplate {
2502
2527
final metadata = this .metadata;
@@ -4870,6 +4895,9 @@ class MultiplyDefinedElementImpl implements MultiplyDefinedElement {
4870
4895
@override
4871
4896
bool get hasSealed => false ;
4872
4897
4898
+ @override
4899
+ bool get hasUseResult => false ;
4900
+
4873
4901
@override
4874
4902
bool get hasVisibleForTemplate => false ;
4875
4903
0 commit comments