{"action":"opened","issue":{"url":"https://api.github.com/repos/dart-lang/dev_compiler/issues/181","labels_url":"https://api.github.com/repos/dart-lang/dev_compiler/issues/181/labels{/name}","comments_url":"https://api.github.com/repos/dart-lang/dev_compiler/issues/181/comments","events_url":"https://api.github.com/repos/dart-lang/dev_compiler/issues/181/events","html_url":"https://github.com/dart-lang/dev_compiler/issues/181","id":75659691,"number":181,"title":"static fields are different for each generic type instantiation","user":{"login":"jmesserly","id":1081711,"avatar_url":"https://avatars.githubusercontent.com/u/1081711?v=3","gravatar_id":"","url":"https://api.github.com/users/jmesserly","html_url":"https://github.com/jmesserly","followers_url":"https://api.github.com/users/jmesserly/followers","following_url":"https://api.github.com/users/jmesserly/following{/other_user}","gists_url":"https://api.github.com/users/jmesserly/gists{/gist_id}","starred_url":"https://api.github.com/users/jmesserly/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmesserly/subscriptions","organizations_url":"https://api.github.com/users/jmesserly/orgs","repos_url":"https://api.github.com/users/jmesserly/repos","events_url":"https://api.github.com/users/jmesserly/events{/privacy}","received_events_url":"https://api.github.com/users/jmesserly/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dart-lang/dev_compiler/labels/bug","name":"bug","color":"fc2929"},{"url":"https://api.github.com/repos/dart-lang/dev_compiler/labels/js","name":"js","color":"fef2c0"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-05-12T16:30:04Z","updated_at":"2015-05-12T16:30:04Z","closed_at":null,"body":"The current codegen puts static fields inside `dart.generic` ... that's broken, as it means the static field corresponds to the instantiation of the generic class. From outside, we always refer to the dynamic substitution, but from inside, if unqualified static field, we accidentally refer to the current generic type. So, Foo<int>.bar instead of Foo<dynamic>.bar\r\n\r\nThis can be observed for mutable fields, as well as lazy final ones (it will be initialized multiple times)\r\n\r\nFixed in https://codereview.chromium.org/1133593004\r\n"}}