Version 2.14.0-104.0.dev
Merge commit 'a4e4659c82ab02297d9c31429bbd404b28d36f7d' into 'dev'
diff --git a/pkg/analyzer/lib/src/error/best_practices_verifier.dart b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
index fdc1130..2cfb030 100644
--- a/pkg/analyzer/lib/src/error/best_practices_verifier.dart
+++ b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
@@ -338,6 +338,7 @@
@override
void visitConstructorDeclaration(ConstructorDeclaration node) {
+ var element = node.declaredElement as ConstructorElementImpl;
if (!_isNonNullableByDefault && node.declaredElement!.isFactory) {
if (node.body is BlockFunctionBody) {
// Check the block for a return statement, if not, create the hint.
@@ -349,7 +350,12 @@
}
_checkStrictInferenceInParameters(node.parameters,
body: node.body, initializers: node.initializers);
- super.visitConstructorDeclaration(node);
+ _deprecatedVerifier.pushInDeprecatedValue(element.hasDeprecated);
+ try {
+ super.visitConstructorDeclaration(node);
+ } finally {
+ _deprecatedVerifier.popInDeprecated();
+ }
}
@override
diff --git a/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart b/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
index 77b7e3c..97435e1 100644
--- a/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
@@ -135,6 +135,27 @@
]);
}
+ test_field_inDeprecatedConstructor() async {
+ newFile('$workspaceRootPath/aaa/lib/a.dart', content: r'''
+class A {
+ @deprecated
+ int x = 0;
+}
+''');
+
+ await assertNoErrorsInCode(r'''
+import 'package:aaa/a.dart';
+
+class B extends A {
+ @deprecated
+ B() {
+ x;
+ x = 1;
+ }
+}
+''');
+ }
+
test_fieldGet_implicitGetter() async {
newFile('$workspaceRootPath/aaa/lib/a.dart', content: r'''
class A {
@@ -188,6 +209,26 @@
]);
}
+ test_method_inDeprecatedConstructor() async {
+ newFile('$workspaceRootPath/aaa/lib/a.dart', content: r'''
+class A {
+ @deprecated
+ void foo() {}
+}
+''');
+
+ await assertNoErrorsInCode(r'''
+import 'package:aaa/a.dart';
+
+class B extends A {
+ @deprecated
+ B() {
+ foo();
+ }
+}
+''');
+ }
+
test_methodInvocation() async {
newFile('$workspaceRootPath/aaa/lib/a.dart', content: r'''
class A {
@@ -626,6 +667,36 @@
]);
}
+ test_field_inDeprecatedConstructor() async {
+ await assertNoErrorsInCode(r'''
+class A {
+ @deprecated
+ int x = 1;
+
+ @deprecated
+ A() {
+ x;
+ x = 2;
+ }
+}
+''');
+ }
+
+ test_field_inDeprecatedFunction() async {
+ await assertNoErrorsInCode(r'''
+class A {
+ @deprecated
+ int x = 1;
+}
+
+@deprecated
+void f(A a) {
+ a.x;
+ a.x = 2;
+}
+''');
+ }
+
test_getter() async {
await assertErrorsInCode(r'''
class A {
@@ -816,6 +887,20 @@
]);
}
+ test_method_inDeprecatedConstructor() async {
+ await assertNoErrorsInCode(r'''
+class A {
+ @deprecated
+ A() {
+ foo();
+ }
+
+ @deprecated
+ void foo() {}
+}
+''');
+ }
+
test_methodInvocation_constant() async {
await assertErrorsInCode(r'''
class A {
@@ -966,6 +1051,32 @@
]);
}
+ test_parameter_positionalOptional_inDeprecatedConstructor() async {
+ await assertNoErrorsInCode(r'''
+class A {
+ @deprecated
+ A() {
+ foo(0);
+ }
+
+ void foo([@deprecated int x]) {}
+}
+''');
+ }
+
+ test_parameter_positionalOptional_inDeprecatedFunction() async {
+ await assertNoErrorsInCode(r'''
+class A {
+ void foo([@deprecated int x]) {}
+}
+
+@deprecated
+void f(A a) {
+ a.foo(0);
+}
+''');
+ }
+
test_parameter_positionalRequired() async {
await assertNoErrorsInCode(r'''
class A {
diff --git a/runtime/vm/bitmap.cc b/runtime/vm/bitmap.cc
index 52c32db..1799816 100644
--- a/runtime/vm/bitmap.cc
+++ b/runtime/vm/bitmap.cc
@@ -6,6 +6,7 @@
#include "platform/assert.h"
#include "vm/object.h"
+#include "vm/log.h"
namespace dart {
@@ -77,9 +78,9 @@
void BitmapBuilder::Print() const {
for (intptr_t i = 0; i < Length(); i++) {
if (Get(i)) {
- OS::PrintErr("1");
+ THR_Print("1");
} else {
- OS::PrintErr("0");
+ THR_Print("0");
}
}
}
diff --git a/tools/VERSION b/tools/VERSION
index 30b3cd5..bfb8831 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 14
PATCH 0
-PRERELEASE 103
+PRERELEASE 104
PRERELEASE_PATCH 0
\ No newline at end of file