library test;
import self as self;
import "dart:core" as core;
import "./infer_statics_transitively3_a.dart" as inf;

import "org-dartlang-testcase:///infer_statics_transitively3_a.dart";
import "org-dartlang-testcase:///infer_statics_transitively3_a.dart" as p;

static const field core::int t1 = 1;
static const field core::int t2 = self::t1;
static const field core::int t3 = inf::a1;
static const field core::int t4 = inf::a2;
static const field dynamic t5 = inf::A::a3;
static const field dynamic t6 = inf::A::a3;
static method foo() → dynamic {
  core::int i;
  i = self::t1;
  i = self::t2;
  i = self::t3;
  i = self::t4;
}
static method main() → dynamic {}

library;
import self as inf;
import "dart:core" as core;

class A extends core::Object {
  static const field dynamic a3 = null;
  synthetic constructor •() → inf::A
    : super core::Object::•()
    ;
}
static const field core::int a1 = 3;
static const field core::int a2 = 4;
static method main() → dynamic {}
