@@ -367,6 +367,40 @@ dynamic f() {}
367367 assertEdge (always, decoratedType.node, hard: false );
368368 }
369369
370+ test_field_type_implicit_dynamic () async {
371+ await analyze ('''
372+ class C {
373+ var x;
374+ }
375+ ''' );
376+ var decoratedType =
377+ variables.decoratedElementType (findNode.simple ('x' ).staticElement);
378+ expect (decoratedType.node, same (always));
379+ }
380+
381+ test_field_type_inferred () async {
382+ await analyze ('''
383+ class C {
384+ var x = 1;
385+ }
386+ ''' );
387+ var decoratedType =
388+ variables.decoratedElementType (findNode.simple ('x' ).staticElement);
389+ expect (decoratedType.node, TypeMatcher <NullabilityNodeMutable >());
390+ }
391+
392+ test_field_type_inferred_dynamic () async {
393+ await analyze ('''
394+ dynamic f() {}
395+ class C {
396+ var x = f();
397+ }
398+ ''' );
399+ var decoratedType =
400+ variables.decoratedElementType (findNode.simple ('x' ).staticElement);
401+ expect (decoratedType.node, same (always));
402+ }
403+
370404 test_field_type_simple () async {
371405 await analyze ('''
372406class C {
@@ -555,6 +589,40 @@ void f(List<int> x) {}
555589 expect (decoratedIntType.node, isNot (never));
556590 }
557591
592+ test_localVariable_type_implicit_dynamic () async {
593+ await analyze ('''
594+ main() {
595+ var x;
596+ }
597+ ''' );
598+ var decoratedType =
599+ variables.decoratedElementType (findNode.simple ('x' ).staticElement);
600+ expect (decoratedType.node, same (always));
601+ }
602+
603+ test_localVariable_type_inferred () async {
604+ await analyze ('''
605+ main() {
606+ var x = 1;
607+ }
608+ ''' );
609+ var decoratedType =
610+ variables.decoratedElementType (findNode.simple ('x' ).staticElement);
611+ expect (decoratedType.node, TypeMatcher <NullabilityNodeMutable >());
612+ }
613+
614+ test_localVariable_type_inferred_dynamic () async {
615+ await analyze ('''
616+ dynamic f() {}
617+ main() {
618+ var x = f();
619+ }
620+ ''' );
621+ var decoratedType =
622+ variables.decoratedElementType (findNode.simple ('x' ).staticElement);
623+ expect (decoratedType.node, same (always));
624+ }
625+
558626 test_method_parameterType_implicit_dynamic () async {
559627 await analyze ('''
560628class C {
@@ -754,6 +822,34 @@ int f() => 0;
754822 expect (decoratedType.node, isNot (never));
755823 }
756824
825+ test_topLevelVariable_type_implicit_dynamic () async {
826+ await analyze ('''
827+ var x;
828+ ''' );
829+ var decoratedType =
830+ variables.decoratedElementType (findNode.simple ('x' ).staticElement);
831+ expect (decoratedType.node, same (always));
832+ }
833+
834+ test_topLevelVariable_type_inferred () async {
835+ await analyze ('''
836+ var x = 1;
837+ ''' );
838+ var decoratedType =
839+ variables.decoratedElementType (findNode.simple ('x' ).staticElement);
840+ expect (decoratedType.node, TypeMatcher <NullabilityNodeMutable >());
841+ }
842+
843+ test_topLevelVariable_type_inferred_dynamic () async {
844+ await analyze ('''
845+ dynamic f() {}
846+ var x = f();
847+ ''' );
848+ var decoratedType =
849+ variables.decoratedElementType (findNode.simple ('x' ).staticElement);
850+ expect (decoratedType.node, same (always));
851+ }
852+
757853 test_type_comment_bang () async {
758854 await analyze ('''
759855void f(int/*!*/ i) {}
0 commit comments