{"action":"created","comment":{"url":"https://api.github.com/repos/lampepfl/dotty/pulls/comments/137217837","pull_request_review_id":60853858,"id":137217837,"diff_hunk":"@@ -1600,57 +1603,93 @@ object SymDenotations {\n        *    and this changes subtyping relations. As a shortcut, we do not\n        *    cache ErasedValueType at all.\n        */\n-      def isCachable(tp: Type, btrCache: BaseTypeRefMap): Boolean = {\n+      def isCachable(tp: Type, btrCache: BaseTypeMap): Boolean = {\n         def inCache(tp: Type) = btrCache.containsKey(tp)\n         tp match {\n           case _: TypeErasure.ErasedValueType => false\n           case tp: TypeRef if tp.symbol.isClass => true\n           case tp: TypeVar => tp.inst.exists && inCache(tp.inst)\n-          case tp: TypeProxy => inCache(tp.underlying)\n-          case tp: AndOrType => inCache(tp.tp1) && inCache(tp.tp2)\n+          //case tp: TypeProxy => inCache(tp.underlying) // disabled, can re-enable insyead of last two lines for performance testing\n+          //case tp: AndOrType => inCache(tp.tp1) && inCache(tp.tp2)\n+          case tp: TypeProxy => isCachable(tp.underlying, btrCache)\n+          case tp: AndOrType => isCachable(tp.tp1, btrCache) && isCachable(tp.tp2, btrCache)\n           case _ => true\n         }\n       }\n \n-      def computeBaseTypeRefOf(tp: Type): Type = {\n-        Stats.record(\"computeBaseTypeOf\")\n-        if (symbol.isStatic && tp.derivesFrom(symbol))\n+      def computeBaseTypeOf(tp: Type): Type = {\n+        if (Stats.monitored) {\n+          Stats.record(\"computeBaseType, total\")\n+          Stats.record(s\"computeBaseType, ${tp.getClass}\")\n+        }\n+        if (symbol.isStatic && tp.derivesFrom(symbol) && symbol.typeParams.isEmpty)\n           symbol.typeRef\n         else tp match {\n-          case tp: TypeRef =>\n-            val subcls = tp.symbol\n-            if (subcls eq symbol)\n-              tp\n-            else subcls.denot match {\n-              case cdenot: ClassDenotation =>\n-                if (cdenot.baseClassSet contains symbol) foldGlb(NoType, tp.parents)\n+          case tp @ TypeRef(prefix, _) =>","path":"compiler/src/dotty/tools/dotc/core/SymDenotations.scala","position":221,"original_position":221,"commit_id":"d92e3e61ed753df2415e5f750235682a757503b2","original_commit_id":"d92e3e61ed753df2415e5f750235682a757503b2","user":{"login":"odersky","id":795990,"avatar_url":"https://avatars2.githubusercontent.com/u/795990?v=4","gravatar_id":"","url":"https://api.github.com/users/odersky","html_url":"https://github.com/odersky","followers_url":"https://api.github.com/users/odersky/followers","following_url":"https://api.github.com/users/odersky/following{/other_user}","gists_url":"https://api.github.com/users/odersky/gists{/gist_id}","starred_url":"https://api.github.com/users/odersky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/odersky/subscriptions","organizations_url":"https://api.github.com/users/odersky/orgs","repos_url":"https://api.github.com/users/odersky/repos","events_url":"https://api.github.com/users/odersky/events{/privacy}","received_events_url":"https://api.github.com/users/odersky/received_events","type":"User","site_admin":false},"body":"Complication: Compute applied base types instead of simple TypeRefs.","created_at":"2017-09-06T09:33:43Z","updated_at":"2017-09-06T09:33:43Z","html_url":"https://github.com/lampepfl/dotty/pull/3061#discussion_r137217837","pull_request_url":"https://api.github.com/repos/lampepfl/dotty/pulls/3061","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/lampepfl/dotty/pulls/comments/137217837"},"html":{"href":"https://github.com/lampepfl/dotty/pull/3061#discussion_r137217837"},"pull_request":{"href":"https://api.github.com/repos/lampepfl/dotty/pulls/3061"}}},"pull_request":{"url":"https://api.github.com/repos/lampepfl/dotty/pulls/3061","id":139254258,"html_url":"https://github.com/lampepfl/dotty/pull/3061","diff_url":"https://github.com/lampepfl/dotty/pull/3061.diff","patch_url":"https://github.com/lampepfl/dotty/pull/3061.patch","issue_url":"https://api.github.com/repos/lampepfl/dotty/issues/3061","number":3061,"state":"open","locked":false,"title":"Applied types, unoptimized","user":{"login":"odersky","id":795990,"avatar_url":"https://avatars2.githubusercontent.com/u/795990?v=4","gravatar_id":"","url":"https://api.github.com/users/odersky","html_url":"https://github.com/odersky","followers_url":"https://api.github.com/users/odersky/followers","following_url":"https://api.github.com/users/odersky/following{/other_user}","gists_url":"https://api.github.com/users/odersky/gists{/gist_id}","starred_url":"https://api.github.com/users/odersky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/odersky/subscriptions","organizations_url":"https://api.github.com/users/odersky/orgs","repos_url":"https://api.github.com/users/odersky/repos","events_url":"https://api.github.com/users/odersky/events{/privacy}","received_events_url":"https://api.github.com/users/odersky/received_events","type":"User","site_admin":false},"body":"This PR covers AppliedTypes before any attempt at optimizations. Recent experience has shown that attempts as optimizations often have unintuitive results, so we should test them very carefully and measure each of them individually.","created_at":"2017-09-05T07:28:39Z","updated_at":"2017-09-06T09:33:43Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ff94012b2694276c0b4c9eecb044e76194d83ce3","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/lampepfl/dotty/pulls/3061/commits","review_comments_url":"https://api.github.com/repos/lampepfl/dotty/pulls/3061/comments","review_comment_url":"https://api.github.com/repos/lampepfl/dotty/pulls/comments{/number}","comments_url":"https://api.github.com/repos/lampepfl/dotty/issues/3061/comments","statuses_url":"https://api.github.com/repos/lampepfl/dotty/statuses/d92e3e61ed753df2415e5f750235682a757503b2","head":{"label":"dotty-staging:test-applied-type","ref":"test-applied-type","sha":"d92e3e61ed753df2415e5f750235682a757503b2","user":{"login":"dotty-staging","id":6998674,"avatar_url":"https://avatars2.githubusercontent.com/u/6998674?v=4","gravatar_id":"","url":"https://api.github.com/users/dotty-staging","html_url":"https://github.com/dotty-staging","followers_url":"https://api.github.com/users/dotty-staging/followers","following_url":"https://api.github.com/users/dotty-staging/following{/other_user}","gists_url":"https://api.github.com/users/dotty-staging/gists{/gist_id}","starred_url":"https://api.github.com/users/dotty-staging/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotty-staging/subscriptions","organizations_url":"https://api.github.com/users/dotty-staging/orgs","repos_url":"https://api.github.com/users/dotty-staging/repos","events_url":"https://api.github.com/users/dotty-staging/events{/privacy}","received_events_url":"https://api.github.com/users/dotty-staging/received_events","type":"Organization","site_admin":false},"repo":{"id":17904384,"name":"dotty","full_name":"dotty-staging/dotty","owner":{"login":"dotty-staging","id":6998674,"avatar_url":"https://avatars2.githubusercontent.com/u/6998674?v=4","gravatar_id":"","url":"https://api.github.com/users/dotty-staging","html_url":"https://github.com/dotty-staging","followers_url":"https://api.github.com/users/dotty-staging/followers","following_url":"https://api.github.com/users/dotty-staging/following{/other_user}","gists_url":"https://api.github.com/users/dotty-staging/gists{/gist_id}","starred_url":"https://api.github.com/users/dotty-staging/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotty-staging/subscriptions","organizations_url":"https://api.github.com/users/dotty-staging/orgs","repos_url":"https://api.github.com/users/dotty-staging/repos","events_url":"https://api.github.com/users/dotty-staging/events{/privacy}","received_events_url":"https://api.github.com/users/dotty-staging/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dotty-staging/dotty","description":"Research platform for new language concepts and compiler technologies for Scala.","fork":true,"url":"https://api.github.com/repos/dotty-staging/dotty","forks_url":"https://api.github.com/repos/dotty-staging/dotty/forks","keys_url":"https://api.github.com/repos/dotty-staging/dotty/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotty-staging/dotty/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotty-staging/dotty/teams","hooks_url":"https://api.github.com/repos/dotty-staging/dotty/hooks","issue_events_url":"https://api.github.com/repos/dotty-staging/dotty/issues/events{/number}","events_url":"https://api.github.com/repos/dotty-staging/dotty/events","assignees_url":"https://api.github.com/repos/dotty-staging/dotty/assignees{/user}","branches_url":"https://api.github.com/repos/dotty-staging/dotty/branches{/branch}","tags_url":"https://api.github.com/repos/dotty-staging/dotty/tags","blobs_url":"https://api.github.com/repos/dotty-staging/dotty/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotty-staging/dotty/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotty-staging/dotty/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotty-staging/dotty/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotty-staging/dotty/statuses/{sha}","languages_url":"https://api.github.com/repos/dotty-staging/dotty/languages","stargazers_url":"https://api.github.com/repos/dotty-staging/dotty/stargazers","contributors_url":"https://api.github.com/repos/dotty-staging/dotty/contributors","subscribers_url":"https://api.github.com/repos/dotty-staging/dotty/subscribers","subscription_url":"https://api.github.com/repos/dotty-staging/dotty/subscription","commits_url":"https://api.github.com/repos/dotty-staging/dotty/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotty-staging/dotty/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotty-staging/dotty/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotty-staging/dotty/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotty-staging/dotty/contents/{+path}","compare_url":"https://api.github.com/repos/dotty-staging/dotty/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotty-staging/dotty/merges","archive_url":"https://api.github.com/repos/dotty-staging/dotty/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotty-staging/dotty/downloads","issues_url":"https://api.github.com/repos/dotty-staging/dotty/issues{/number}","pulls_url":"https://api.github.com/repos/dotty-staging/dotty/pulls{/number}","milestones_url":"https://api.github.com/repos/dotty-staging/dotty/milestones{/number}","notifications_url":"https://api.github.com/repos/dotty-staging/dotty/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotty-staging/dotty/labels{/name}","releases_url":"https://api.github.com/repos/dotty-staging/dotty/releases{/id}","deployments_url":"https://api.github.com/repos/dotty-staging/dotty/deployments","created_at":"2014-03-19T13:06:15Z","updated_at":"2017-07-27T19:06:35Z","pushed_at":"2017-09-06T08:57:20Z","git_url":"git://github.com/dotty-staging/dotty.git","ssh_url":"git@github.com:dotty-staging/dotty.git","clone_url":"https://github.com/dotty-staging/dotty.git","svn_url":"https://github.com/dotty-staging/dotty","homepage":"","size":37870,"stargazers_count":7,"watchers_count":7,"language":"Scala","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":0,"forks":2,"open_issues":0,"watchers":7,"default_branch":"master"}},"base":{"label":"lampepfl:master","ref":"master","sha":"8f15b2ad866ca6508baae8fdd6d9a5a57cef803c","user":{"login":"lampepfl","id":2684793,"avatar_url":"https://avatars1.githubusercontent.com/u/2684793?v=4","gravatar_id":"","url":"https://api.github.com/users/lampepfl","html_url":"https://github.com/lampepfl","followers_url":"https://api.github.com/users/lampepfl/followers","following_url":"https://api.github.com/users/lampepfl/following{/other_user}","gists_url":"https://api.github.com/users/lampepfl/gists{/gist_id}","starred_url":"https://api.github.com/users/lampepfl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lampepfl/subscriptions","organizations_url":"https://api.github.com/users/lampepfl/orgs","repos_url":"https://api.github.com/users/lampepfl/repos","events_url":"https://api.github.com/users/lampepfl/events{/privacy}","received_events_url":"https://api.github.com/users/lampepfl/received_events","type":"Organization","site_admin":false},"repo":{"id":7035651,"name":"dotty","full_name":"lampepfl/dotty","owner":{"login":"lampepfl","id":2684793,"avatar_url":"https://avatars1.githubusercontent.com/u/2684793?v=4","gravatar_id":"","url":"https://api.github.com/users/lampepfl","html_url":"https://github.com/lampepfl","followers_url":"https://api.github.com/users/lampepfl/followers","following_url":"https://api.github.com/users/lampepfl/following{/other_user}","gists_url":"https://api.github.com/users/lampepfl/gists{/gist_id}","starred_url":"https://api.github.com/users/lampepfl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lampepfl/subscriptions","organizations_url":"https://api.github.com/users/lampepfl/orgs","repos_url":"https://api.github.com/users/lampepfl/repos","events_url":"https://api.github.com/users/lampepfl/events{/privacy}","received_events_url":"https://api.github.com/users/lampepfl/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/lampepfl/dotty","description":"Research platform for new language concepts and compiler technologies for Scala.","fork":false,"url":"https://api.github.com/repos/lampepfl/dotty","forks_url":"https://api.github.com/repos/lampepfl/dotty/forks","keys_url":"https://api.github.com/repos/lampepfl/dotty/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lampepfl/dotty/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lampepfl/dotty/teams","hooks_url":"https://api.github.com/repos/lampepfl/dotty/hooks","issue_events_url":"https://api.github.com/repos/lampepfl/dotty/issues/events{/number}","events_url":"https://api.github.com/repos/lampepfl/dotty/events","assignees_url":"https://api.github.com/repos/lampepfl/dotty/assignees{/user}","branches_url":"https://api.github.com/repos/lampepfl/dotty/branches{/branch}","tags_url":"https://api.github.com/repos/lampepfl/dotty/tags","blobs_url":"https://api.github.com/repos/lampepfl/dotty/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lampepfl/dotty/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lampepfl/dotty/git/refs{/sha}","trees_url":"https://api.github.com/repos/lampepfl/dotty/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lampepfl/dotty/statuses/{sha}","languages_url":"https://api.github.com/repos/lampepfl/dotty/languages","stargazers_url":"https://api.github.com/repos/lampepfl/dotty/stargazers","contributors_url":"https://api.github.com/repos/lampepfl/dotty/contributors","subscribers_url":"https://api.github.com/repos/lampepfl/dotty/subscribers","subscription_url":"https://api.github.com/repos/lampepfl/dotty/subscription","commits_url":"https://api.github.com/repos/lampepfl/dotty/commits{/sha}","git_commits_url":"https://api.github.com/repos/lampepfl/dotty/git/commits{/sha}","comments_url":"https://api.github.com/repos/lampepfl/dotty/comments{/number}","issue_comment_url":"https://api.github.com/repos/lampepfl/dotty/issues/comments{/number}","contents_url":"https://api.github.com/repos/lampepfl/dotty/contents/{+path}","compare_url":"https://api.github.com/repos/lampepfl/dotty/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lampepfl/dotty/merges","archive_url":"https://api.github.com/repos/lampepfl/dotty/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lampepfl/dotty/downloads","issues_url":"https://api.github.com/repos/lampepfl/dotty/issues{/number}","pulls_url":"https://api.github.com/repos/lampepfl/dotty/pulls{/number}","milestones_url":"https://api.github.com/repos/lampepfl/dotty/milestones{/number}","notifications_url":"https://api.github.com/repos/lampepfl/dotty/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lampepfl/dotty/labels{/name}","releases_url":"https://api.github.com/repos/lampepfl/dotty/releases{/id}","deployments_url":"https://api.github.com/repos/lampepfl/dotty/deployments","created_at":"2012-12-06T12:57:33Z","updated_at":"2017-09-03T11:59:46Z","pushed_at":"2017-09-06T08:59:40Z","git_url":"git://github.com/lampepfl/dotty.git","ssh_url":"git@github.com:lampepfl/dotty.git","clone_url":"https://github.com/lampepfl/dotty.git","svn_url":"https://github.com/lampepfl/dotty","homepage":"http://dotty.epfl.ch","size":172943,"stargazers_count":1878,"watchers_count":1878,"language":"Scala","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":289,"mirror_url":null,"open_issues_count":399,"forks":289,"open_issues":399,"watchers":1878,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/lampepfl/dotty/pulls/3061"},"html":{"href":"https://github.com/lampepfl/dotty/pull/3061"},"issue":{"href":"https://api.github.com/repos/lampepfl/dotty/issues/3061"},"comments":{"href":"https://api.github.com/repos/lampepfl/dotty/issues/3061/comments"},"review_comments":{"href":"https://api.github.com/repos/lampepfl/dotty/pulls/3061/comments"},"review_comment":{"href":"https://api.github.com/repos/lampepfl/dotty/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/lampepfl/dotty/pulls/3061/commits"},"statuses":{"href":"https://api.github.com/repos/lampepfl/dotty/statuses/d92e3e61ed753df2415e5f750235682a757503b2"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"odersky"}}