{"action":"created","comment":{"url":"https://api.github.com/repos/ocaml/dune/pulls/comments/225456987","pull_request_review_id":165057270,"id":225456987,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyNTQ1Njk4Nw==","diff_hunk":"@@ -99,18 +99,49 @@ module Dep_graphs = struct\n                   )\n               )\n         }\n-    (* implementations don't introduce interface deps b/c they don't have\n-       interfaces *)\n+    (* implementations introduce interface dependencies for private modules\n+       only *)\n     ; intf =\n-        { vlib.intf with\n-          per_module =\n-            Module.Name.Map.map vlib.intf.per_module ~f:(fun v ->\n-              v >>^ List.map ~f:Module.remove_files\n-            )\n+        { Dep_graph.\n+          dir = impl.intf.dir\n+        ; per_module =\n+            Module.Name.Map.merge vlib.intf.per_module impl.intf.per_module\n+              ~f:(fun name vlib impl ->\n+                match vlib, impl with\n+                | None, None -> assert false\n+                | Some v, Some i ->\n+                  (* This can happen when we are implementing the virtul module","path":"src/ocamldep.ml","position":22,"original_position":22,"commit_id":"8e118397788cd438594d7bbbd2d51ea42cbed1d2","original_commit_id":"8e118397788cd438594d7bbbd2d51ea42cbed1d2","user":{"login":"emillon","id":496345,"node_id":"MDQ6VXNlcjQ5NjM0NQ==","avatar_url":"https://avatars2.githubusercontent.com/u/496345?v=4","gravatar_id":"","url":"https://api.github.com/users/emillon","html_url":"https://github.com/emillon","followers_url":"https://api.github.com/users/emillon/followers","following_url":"https://api.github.com/users/emillon/following{/other_user}","gists_url":"https://api.github.com/users/emillon/gists{/gist_id}","starred_url":"https://api.github.com/users/emillon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/emillon/subscriptions","organizations_url":"https://api.github.com/users/emillon/orgs","repos_url":"https://api.github.com/users/emillon/repos","events_url":"https://api.github.com/users/emillon/events{/privacy}","received_events_url":"https://api.github.com/users/emillon/received_events","type":"User","site_admin":false},"body":"typo: virtual","created_at":"2018-10-16T09:09:12Z","updated_at":"2018-10-16T09:13:01Z","html_url":"https://github.com/ocaml/dune/pull/1453#discussion_r225456987","pull_request_url":"https://api.github.com/repos/ocaml/dune/pulls/1453","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/ocaml/dune/pulls/comments/225456987"},"html":{"href":"https://github.com/ocaml/dune/pull/1453#discussion_r225456987"},"pull_request":{"href":"https://api.github.com/repos/ocaml/dune/pulls/1453"}}},"pull_request":{"url":"https://api.github.com/repos/ocaml/dune/pulls/1453","id":222779667,"node_id":"MDExOlB1bGxSZXF1ZXN0MjIyNzc5NjY3","html_url":"https://github.com/ocaml/dune/pull/1453","diff_url":"https://github.com/ocaml/dune/pull/1453.diff","patch_url":"https://github.com/ocaml/dune/pull/1453.patch","issue_url":"https://api.github.com/repos/ocaml/dune/issues/1453","number":1453,"state":"open","locked":false,"title":"Virtual library implementation fixes related to private modules","user":{"login":"rgrinberg","id":139003,"node_id":"MDQ6VXNlcjEzOTAwMw==","avatar_url":"https://avatars3.githubusercontent.com/u/139003?v=4","gravatar_id":"","url":"https://api.github.com/users/rgrinberg","html_url":"https://github.com/rgrinberg","followers_url":"https://api.github.com/users/rgrinberg/followers","following_url":"https://api.github.com/users/rgrinberg/following{/other_user}","gists_url":"https://api.github.com/users/rgrinberg/gists{/gist_id}","starred_url":"https://api.github.com/users/rgrinberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rgrinberg/subscriptions","organizations_url":"https://api.github.com/users/rgrinberg/orgs","repos_url":"https://api.github.com/users/rgrinberg/repos","events_url":"https://api.github.com/users/rgrinberg/events{/privacy}","received_events_url":"https://api.github.com/users/rgrinberg/received_events","type":"User","site_admin":false},"body":"Implementations of virtual libraries need an alias module that includes modules from the implementation and virtual library. On the way, I also fix two unrelated issues:\r\n\r\n* The dependency graph was wrong in the presence of private module mli's\r\n* The .install file wasn't being generated as some incorrect copy rules were setup.","created_at":"2018-10-15T04:43:33Z","updated_at":"2018-10-16T09:13:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a4c0f709da7fef78ad814ee3b1ef3cd2aaee9ef1","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/ocaml/dune/pulls/1453/commits","review_comments_url":"https://api.github.com/repos/ocaml/dune/pulls/1453/comments","review_comment_url":"https://api.github.com/repos/ocaml/dune/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ocaml/dune/issues/1453/comments","statuses_url":"https://api.github.com/repos/ocaml/dune/statuses/8e118397788cd438594d7bbbd2d51ea42cbed1d2","head":{"label":"rgrinberg:private-module-impls","ref":"private-module-impls","sha":"8e118397788cd438594d7bbbd2d51ea42cbed1d2","user":{"login":"rgrinberg","id":139003,"node_id":"MDQ6VXNlcjEzOTAwMw==","avatar_url":"https://avatars3.githubusercontent.com/u/139003?v=4","gravatar_id":"","url":"https://api.github.com/users/rgrinberg","html_url":"https://github.com/rgrinberg","followers_url":"https://api.github.com/users/rgrinberg/followers","following_url":"https://api.github.com/users/rgrinberg/following{/other_user}","gists_url":"https://api.github.com/users/rgrinberg/gists{/gist_id}","starred_url":"https://api.github.com/users/rgrinberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rgrinberg/subscriptions","organizations_url":"https://api.github.com/users/rgrinberg/orgs","repos_url":"https://api.github.com/users/rgrinberg/repos","events_url":"https://api.github.com/users/rgrinberg/events{/privacy}","received_events_url":"https://api.github.com/users/rgrinberg/received_events","type":"User","site_admin":false},"repo":{"id":81893852,"node_id":"MDEwOlJlcG9zaXRvcnk4MTg5Mzg1Mg==","name":"jbuilder","full_name":"rgrinberg/jbuilder","private":false,"owner":{"login":"rgrinberg","id":139003,"node_id":"MDQ6VXNlcjEzOTAwMw==","avatar_url":"https://avatars3.githubusercontent.com/u/139003?v=4","gravatar_id":"","url":"https://api.github.com/users/rgrinberg","html_url":"https://github.com/rgrinberg","followers_url":"https://api.github.com/users/rgrinberg/followers","following_url":"https://api.github.com/users/rgrinberg/following{/other_user}","gists_url":"https://api.github.com/users/rgrinberg/gists{/gist_id}","starred_url":"https://api.github.com/users/rgrinberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rgrinberg/subscriptions","organizations_url":"https://api.github.com/users/rgrinberg/orgs","repos_url":"https://api.github.com/users/rgrinberg/repos","events_url":"https://api.github.com/users/rgrinberg/events{/privacy}","received_events_url":"https://api.github.com/users/rgrinberg/received_events","type":"User","site_admin":false},"html_url":"https://github.com/rgrinberg/jbuilder","description":"Release build system","fork":true,"url":"https://api.github.com/repos/rgrinberg/jbuilder","forks_url":"https://api.github.com/repos/rgrinberg/jbuilder/forks","keys_url":"https://api.github.com/repos/rgrinberg/jbuilder/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rgrinberg/jbuilder/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rgrinberg/jbuilder/teams","hooks_url":"https://api.github.com/repos/rgrinberg/jbuilder/hooks","issue_events_url":"https://api.github.com/repos/rgrinberg/jbuilder/issues/events{/number}","events_url":"https://api.github.com/repos/rgrinberg/jbuilder/events","assignees_url":"https://api.github.com/repos/rgrinberg/jbuilder/assignees{/user}","branches_url":"https://api.github.com/repos/rgrinberg/jbuilder/branches{/branch}","tags_url":"https://api.github.com/repos/rgrinberg/jbuilder/tags","blobs_url":"https://api.github.com/repos/rgrinberg/jbuilder/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rgrinberg/jbuilder/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rgrinberg/jbuilder/git/refs{/sha}","trees_url":"https://api.github.com/repos/rgrinberg/jbuilder/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rgrinberg/jbuilder/statuses/{sha}","languages_url":"https://api.github.com/repos/rgrinberg/jbuilder/languages","stargazers_url":"https://api.github.com/repos/rgrinberg/jbuilder/stargazers","contributors_url":"https://api.github.com/repos/rgrinberg/jbuilder/contributors","subscribers_url":"https://api.github.com/repos/rgrinberg/jbuilder/subscribers","subscription_url":"https://api.github.com/repos/rgrinberg/jbuilder/subscription","commits_url":"https://api.github.com/repos/rgrinberg/jbuilder/commits{/sha}","git_commits_url":"https://api.github.com/repos/rgrinberg/jbuilder/git/commits{/sha}","comments_url":"https://api.github.com/repos/rgrinberg/jbuilder/comments{/number}","issue_comment_url":"https://api.github.com/repos/rgrinberg/jbuilder/issues/comments{/number}","contents_url":"https://api.github.com/repos/rgrinberg/jbuilder/contents/{+path}","compare_url":"https://api.github.com/repos/rgrinberg/jbuilder/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rgrinberg/jbuilder/merges","archive_url":"https://api.github.com/repos/rgrinberg/jbuilder/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rgrinberg/jbuilder/downloads","issues_url":"https://api.github.com/repos/rgrinberg/jbuilder/issues{/number}","pulls_url":"https://api.github.com/repos/rgrinberg/jbuilder/pulls{/number}","milestones_url":"https://api.github.com/repos/rgrinberg/jbuilder/milestones{/number}","notifications_url":"https://api.github.com/repos/rgrinberg/jbuilder/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rgrinberg/jbuilder/labels{/name}","releases_url":"https://api.github.com/repos/rgrinberg/jbuilder/releases{/id}","deployments_url":"https://api.github.com/repos/rgrinberg/jbuilder/deployments","created_at":"2017-02-14T02:11:03Z","updated_at":"2017-02-14T02:11:05Z","pushed_at":"2018-10-16T02:47:43Z","git_url":"git://github.com/rgrinberg/jbuilder.git","ssh_url":"git@github.com:rgrinberg/jbuilder.git","clone_url":"https://github.com/rgrinberg/jbuilder.git","svn_url":"https://github.com/rgrinberg/jbuilder","homepage":"","size":7251,"stargazers_count":0,"watchers_count":0,"language":"OCaml","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ocaml:master","ref":"master","sha":"e28a54bbcd98cd6cf009bb87c09b18152faf7814","user":{"login":"ocaml","id":1841483,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE4NDE0ODM=","avatar_url":"https://avatars3.githubusercontent.com/u/1841483?v=4","gravatar_id":"","url":"https://api.github.com/users/ocaml","html_url":"https://github.com/ocaml","followers_url":"https://api.github.com/users/ocaml/followers","following_url":"https://api.github.com/users/ocaml/following{/other_user}","gists_url":"https://api.github.com/users/ocaml/gists{/gist_id}","starred_url":"https://api.github.com/users/ocaml/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ocaml/subscriptions","organizations_url":"https://api.github.com/users/ocaml/orgs","repos_url":"https://api.github.com/users/ocaml/repos","events_url":"https://api.github.com/users/ocaml/events{/privacy}","received_events_url":"https://api.github.com/users/ocaml/received_events","type":"Organization","site_admin":false},"repo":{"id":72368050,"node_id":"MDEwOlJlcG9zaXRvcnk3MjM2ODA1MA==","name":"dune","full_name":"ocaml/dune","private":false,"owner":{"login":"ocaml","id":1841483,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE4NDE0ODM=","avatar_url":"https://avatars3.githubusercontent.com/u/1841483?v=4","gravatar_id":"","url":"https://api.github.com/users/ocaml","html_url":"https://github.com/ocaml","followers_url":"https://api.github.com/users/ocaml/followers","following_url":"https://api.github.com/users/ocaml/following{/other_user}","gists_url":"https://api.github.com/users/ocaml/gists{/gist_id}","starred_url":"https://api.github.com/users/ocaml/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ocaml/subscriptions","organizations_url":"https://api.github.com/users/ocaml/orgs","repos_url":"https://api.github.com/users/ocaml/repos","events_url":"https://api.github.com/users/ocaml/events{/privacy}","received_events_url":"https://api.github.com/users/ocaml/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/ocaml/dune","description":"A composable build system for OCaml","fork":false,"url":"https://api.github.com/repos/ocaml/dune","forks_url":"https://api.github.com/repos/ocaml/dune/forks","keys_url":"https://api.github.com/repos/ocaml/dune/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ocaml/dune/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ocaml/dune/teams","hooks_url":"https://api.github.com/repos/ocaml/dune/hooks","issue_events_url":"https://api.github.com/repos/ocaml/dune/issues/events{/number}","events_url":"https://api.github.com/repos/ocaml/dune/events","assignees_url":"https://api.github.com/repos/ocaml/dune/assignees{/user}","branches_url":"https://api.github.com/repos/ocaml/dune/branches{/branch}","tags_url":"https://api.github.com/repos/ocaml/dune/tags","blobs_url":"https://api.github.com/repos/ocaml/dune/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ocaml/dune/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ocaml/dune/git/refs{/sha}","trees_url":"https://api.github.com/repos/ocaml/dune/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ocaml/dune/statuses/{sha}","languages_url":"https://api.github.com/repos/ocaml/dune/languages","stargazers_url":"https://api.github.com/repos/ocaml/dune/stargazers","contributors_url":"https://api.github.com/repos/ocaml/dune/contributors","subscribers_url":"https://api.github.com/repos/ocaml/dune/subscribers","subscription_url":"https://api.github.com/repos/ocaml/dune/subscription","commits_url":"https://api.github.com/repos/ocaml/dune/commits{/sha}","git_commits_url":"https://api.github.com/repos/ocaml/dune/git/commits{/sha}","comments_url":"https://api.github.com/repos/ocaml/dune/comments{/number}","issue_comment_url":"https://api.github.com/repos/ocaml/dune/issues/comments{/number}","contents_url":"https://api.github.com/repos/ocaml/dune/contents/{+path}","compare_url":"https://api.github.com/repos/ocaml/dune/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ocaml/dune/merges","archive_url":"https://api.github.com/repos/ocaml/dune/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ocaml/dune/downloads","issues_url":"https://api.github.com/repos/ocaml/dune/issues{/number}","pulls_url":"https://api.github.com/repos/ocaml/dune/pulls{/number}","milestones_url":"https://api.github.com/repos/ocaml/dune/milestones{/number}","notifications_url":"https://api.github.com/repos/ocaml/dune/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ocaml/dune/labels{/name}","releases_url":"https://api.github.com/repos/ocaml/dune/releases{/id}","deployments_url":"https://api.github.com/repos/ocaml/dune/deployments","created_at":"2016-10-30T18:42:23Z","updated_at":"2018-10-16T07:13:58Z","pushed_at":"2018-10-16T07:28:17Z","git_url":"git://github.com/ocaml/dune.git","ssh_url":"git@github.com:ocaml/dune.git","clone_url":"https://github.com/ocaml/dune.git","svn_url":"https://github.com/ocaml/dune","homepage":"","size":7055,"stargazers_count":506,"watchers_count":506,"language":"OCaml","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":108,"mirror_url":null,"archived":false,"open_issues_count":218,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":108,"open_issues":218,"watchers":506,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ocaml/dune/pulls/1453"},"html":{"href":"https://github.com/ocaml/dune/pull/1453"},"issue":{"href":"https://api.github.com/repos/ocaml/dune/issues/1453"},"comments":{"href":"https://api.github.com/repos/ocaml/dune/issues/1453/comments"},"review_comments":{"href":"https://api.github.com/repos/ocaml/dune/pulls/1453/comments"},"review_comment":{"href":"https://api.github.com/repos/ocaml/dune/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ocaml/dune/pulls/1453/commits"},"statuses":{"href":"https://api.github.com/repos/ocaml/dune/statuses/8e118397788cd438594d7bbbd2d51ea42cbed1d2"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"emillon"}}