{"push_id":1248034679,"size":76,"distinct_size":2,"ref":"refs/heads/master","head":"b508fe81e0d7cb6d73db812a093f48f28e00b627","before":"f302c310f0c4819c6525bac763e0eb7fc3b81001","commits":[{"sha":"e010fbcf8ac01c5c8fae5f0e65176e16651b921c","author":{"name":"Gabe Levi","email":"5d449a12c794afe43d7f3b9deb4c34adddd17ff2@gmail.com"},"message":"Add gif to .gitattributes","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/e010fbcf8ac01c5c8fae5f0e65176e16651b921c"},{"sha":"44f4946cbf55e83cf29ebd1e0122faf7f97f9203","author":{"name":"Gabe Levi","email":"5d449a12c794afe43d7f3b9deb4c34adddd17ff2@gmail.com"},"message":"Merge pull request #2128 from gabelevi/windows-gif\n\nAdd gif to .gitattributes","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/44f4946cbf55e83cf29ebd1e0122faf7f97f9203"},{"sha":"90e3c29222dfdce03bb072ce15bba201a0ed9b1c","author":{"name":"Gabe Levi","email":"5d449a12c794afe43d7f3b9deb4c34adddd17ff2@gmail.com"},"message":"Gracefully handle no git or hg on Windows\n\nSummary:\nUnfortunately Windows behaves differently if you try to call `create_process` with a non-existent command. This meant the Windows build did not work if you didn't have git or hg in your path.\nCloses https://github.com/facebook/flow/pull/2129\n\nReviewed By: samwgoldman\n\nDifferential Revision: D3615169\n\nPulled By: gabelevi\n\nfbshipit-source-id: 367f1ff4c051578af80ef71e7c54dd25af886101","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/90e3c29222dfdce03bb072ce15bba201a0ed9b1c"},{"sha":"7206e620cbe9f2993fa86eb669861573395d78e0","author":{"name":"Fernando Montoya","email":"7931a4e297ebf28680e6ebb336512b15fb6b87b1@gmail.com"},"message":"Update flow comments in getting starting page\n\nSummary:\nAs pointed out by https://flowtype.org/docs/new-project.html#typechecking-your-files all files should use `/* flow */` comment at the top of the file, this PR updates getting starting guide to use `/* flow */` comments\nCloses https://github.com/facebook/flow/pull/2131\n\nDifferential Revision: D3618583\n\nPulled By: samwgoldman\n\nfbshipit-source-id: a430b5a71efdba28f16c6ce9c4830c4db1939279","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/7206e620cbe9f2993fa86eb669861573395d78e0"},{"sha":"51c699e39dac8c8dd2068ba132d456c2e5354457","author":{"name":"Fernando Montoya","email":"7931a4e297ebf28680e6ebb336512b15fb6b87b1@gmail.com"},"message":"Reverted commit D3618583\n\nSummary:\nAs pointed out by https://flowtype.org/docs/new-project.html#typechecking-your-files all files should use `/* flow */` comment at the top of the file, this PR updates getting starting guide to use `/* flow */` comments\nCloses https://github.com/facebook/flow/pull/2131\n\nDifferential Revision: D3618583\n\nPulled By: samwgoldman\n\nfbshipit-source-id: 4c3f21797d554cf918551b0ea0e13144c99f4263","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/51c699e39dac8c8dd2068ba132d456c2e5354457"},{"sha":"d1fce29bca605cced3cdd9bb6a8efec6b8cdf61f","author":{"name":"Sam Goldman","email":"5f607728c58b3087da3af141ba66272da38de946@fb.com"},"message":"Reposition union-like types in resolved tvars\n\nSummary:\nD3569370 caused a regression in repositioning in a test. The changes in the diff\nwere not the cause, but rather exposed an existing bug in the implementation.\n\nSome types have special repositioning logic, but repositioning a resolved tvar\nbypassed that logic and instead just did a naive reposition. Consider a tvar\nthat was resolved to a union type --- the members of the union would not be\nrepositioned!\n\nThis diff ensures that all repositioning logic is hit for all repositioned\ntypes. The only complex part of this change is dealing with loops, which is\n(hopefully) well explained by the inline comments.\n\nReviewed By: avikchaudhuri\n\nDifferential Revision: D3618894\n\nfbshipit-source-id: 776e24e87a48968f97a7f79445894004fb15800d","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/d1fce29bca605cced3cdd9bb6a8efec6b8cdf61f"},{"sha":"8cac397e96bc1156eeb14545a50561ccecc11213","author":{"name":"Gabe Levi","email":"74afe5e6f5651d063dedb67b26f7904eea6727d4@fb.com"},"message":"Update the AppVeyor ocpwin cache URI\n\nSummary: I'm not 100% sure if this will work, but it's worth a try!\n\nReviewed By: samwgoldman\n\nDifferential Revision: D3623261\n\nfbshipit-source-id: 06f3d89f65c756c82b8c5a763ec5a5c9c5291d50","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/8cac397e96bc1156eeb14545a50561ccecc11213"},{"sha":"35833cd5de4ea28f28ef701362a1a65f005c0c05","author":{"name":"Herman Venter","email":"fe54c149e5bd1b60edc31a1486a83f04e7e995ef@fb.com"},"message":"Provide a way to write a custom dumper for the post initialization state\n\nSummary: This provides stubs for module that will be invoked after initialization.\n\nReviewed By: gabelevi\n\nDifferential Revision: D3591835\n\nfbshipit-source-id: 9cf3493d8ca42d832642aba2c36e99dcd78e7595","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/35833cd5de4ea28f28ef701362a1a65f005c0c05"},{"sha":"f3cacf173baca3cc1674c2c8fac0b33d247c3cbd","author":{"name":"Basil Hosmer","email":"761cb88caa65ccbef0f5ef379df081425e7de45a@fb.com"},"message":"exact types initial support\n\nSummary:\nIntroduces a basic setup for handling exact types. Only\nexact object types are supported in this diff, but it\nshould be possible to incrementally add support for the\nexact forms of other kinds.\n\n$Exact<T> represents the exact interpretation of T (just\nmembers of T, no subtypes). For a given T,\n\n\tExact<T> can flow to Exact<T>\n\tExact<T> can flow to T\n\tT may *not* flow to Exact<T>\n\nConstants have exact types, so also:\n\n\t(constant of type T) can flow to Exact<T>\n\nFor examples, see `newtests/exact`.\n\nTODO:\n1. Add non-experimental syntax\n2. Add support for other kinds as needed\n\nReviewed By: avikchaudhuri\n\nDifferential Revision: D3607502\n\nfbshipit-source-id: 999b88cafb5ba5bb2799f257849b542daccd0136","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/f3cacf173baca3cc1674c2c8fac0b33d247c3cbd"},{"sha":"e75653172d33ea0cca6247a2fce7b4c893ca7505","author":{"name":"Avik Chaudhuri","email":"d23a2e04059a39e04f3b79afa202c62ae1632749@fb.com"},"message":"fix nontermination in Array.prototype.concat.apply\n\nSummary:\nTypeAppT ~> MethodT uses a specialization cache to force the instantiation of\nTypeAppT to be the same for each method call site: this avoids non-termination\nis cases where the result of the method call may be fed back into itself (e.g.,\nusing <array>.map).\n\nHowever, doing <fun>.apply and <fun>.call instead on the method avoids this\nmechanism. So this diff traps those particular cases and uses the same\nspecialization cache to avoid non-termination in similar cases (e.g., using\nArray.prototype.concat.apply).\n\nNOTE: Using the specialization cache more generally for all calls to polymorphic\nfunctions turns out to be too much. In particular, things like Promise.all(...),\nImmutable.Iterable(...), etc. that in turn call polymorphic functions with\nunions of differently typed arguments, expecting different instantiations, don't\nwork as intended.\n\nReviewed By: bhosmer\n\nDifferential Revision: D3627203\n\nfbshipit-source-id: 58d007bb086c009769e04b54e8017822466a1042","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/e75653172d33ea0cca6247a2fce7b4c893ca7505"},{"sha":"fab2fb7054e08a9159e340ffe4cd3fd78340d167","author":{"name":"Avik Chaudhuri","email":"d23a2e04059a39e04f3b79afa202c62ae1632749@fb.com"},"message":"incremental duplicate delete fix\n\nSummary:\nOnce a file was recognized as a duplicate module provider, the error was not\ncleared even after the original provider was deleted and the file became the new\nprovider. This diff fixes.\n\nReviewed By: bhosmer\n\nDifferential Revision: D3627315\n\nfbshipit-source-id: 98bb7ac80890675cbaea062a1ec17e515e5362d9","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/fab2fb7054e08a9159e340ffe4cd3fd78340d167"},{"sha":"4ea3d757b2cf2531131430aae5afda0f882eec16","author":{"name":"Andrew Kennedy","email":"8f4dbee1d1f8400df782dd784d2185d01f0bd28c@fb.com"},"message":"[hack] Add new check for incompatible enum types\n\nSummary:\nCurrently it's possible to use `===` equality on two enum types that\nare distinct and abstract (have no \"as\" clause). It can be argued that\nthis is usually a source of potential bugs, and so this diff introduces\na new error for this situation. It's always possible to override by\ncasting up to `mixed`.\n\nReviewed By: eshrews\n\nDifferential Revision: D3613038\n\nfbshipit-source-id: be468a5332940e38b8ebbdb8c546df638f45ed08","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/4ea3d757b2cf2531131430aae5afda0f882eec16"},{"sha":"fb064e3e1baa6c0ed71cc40a6218a431f59291f2","author":{"name":"Dwayne Reeves","email":"61dc89e7aceb10833447cc813a0b8bed2e0068f3@fb.com"},"message":"[hack] Introduce a thread local cache\n\nSummary: This is the first diff towards restructing how we store class type information in the shared heap. The caching we have for the shared heap is also useful in the general case for computation we would like to cache for a given process. This refactors the code a bit to allow for utilizing the caching code, without requiring storing anything in shared memory. In theory this should probably live in a separate folder/file but since the primary user is still the shared heap I think its fine to leave it as is for.\n\nReviewed By: andrewjkennedy\n\nDifferential Revision: D3538528\n\nfbshipit-source-id: 3d2e964f823b57a6b127669126c81b85931f36d6","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/fb064e3e1baa6c0ed71cc40a6218a431f59291f2"},{"sha":"62be41be504154f72164f5610b4ca50c613f02c6","author":{"name":"Gabe Levi","email":"5d449a12c794afe43d7f3b9deb4c34adddd17ff2@gmail.com"},"message":"Better error message on Windows for long paths\n\nSummary:\nWindows doesn't allow long paths. Previously we'd just output a message saying that we were skipping the paths. This error message is a little more clear.\n\nI ran into this when I used npm2 instead of npm3, which led to some really long file names. Since this is an OS restriction, it's probably better for the user to just avoid long file names than for us to do something clever.\nCloses https://github.com/facebook/flow/pull/2137\n\nReviewed By: samwgoldman\n\nDifferential Revision: D3620670\n\nPulled By: gabelevi\n\nfbshipit-source-id: 28faa40ba29913ca374e10a3caf0f9c8d0116640","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/62be41be504154f72164f5610b4ca50c613f02c6"},{"sha":"cad5c2ef95a83a667a600ef29fdc4d5cd375f23b","author":{"name":"Panagiotis Vekris","email":"21cff819555fd9a19db799ffcac04391ef6ea611@fb.com"},"message":"Encoding predicates in function types\n\nSummary:\n**DISCLAIMER: This is work in progress. Please see limitations below.**\n\nThe goal here is to encode refining predicates of functions.\n\nTake for example the following function that establishes the fact that its\nargument is a string\n\n  function is_string(x) {\n    return typeof x === \"string\";\n  }\n\nOne possible type we can assign is\n\n  (x: mixed) => boolean\n\nhowever, this type ignores the essence of the check performed in\n`is_string`'s body. And so using this function as a conditional check\n\n  if (is_string(x)) { ... }\n\ndoes not narrow down the type for `x` in the then-branch.\n\nA more precise description for `is_string` encodes the function's\ncontract in its return type:\n\n  function is_string(x: mixed): $StrP { ... }\n\nHere, the type `$StrP` as the return type denotes that\n\n>  parameter `x` is a string <==> the function returns true\n\nThe scope of this mechanism is still very **limited**:\n\n  # The only supported predicates are `$StrP`, `$NumP` and `$BoolP`.\n  # Only one argument is supported, and the only context for `$*P` is the return type of a function.\n  # Only functions are supported (no methods).\n  # Inference of function predicates is limited to the context of If-statement conditions.\n  # There is **no** support for **checking** the function's body against its specification.\n\nSo really this only works for declared functions. The immediate next\nstep is to infer such predicate from the function body, which would\nobviate away the need for the (trickier) checking of the specification.\n\nReviewed By: avikchaudhuri\n\nDifferential Revision: D3588421\n\nfbshipit-source-id: e7aee2acd0f774196e0da25c45fe8e26261e767b","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/cad5c2ef95a83a667a600ef29fdc4d5cd375f23b"},{"sha":"5e2c0a5e2879c7788f9b71998753bf980ed35022","author":{"name":"Gabe Levi","email":"74afe5e6f5651d063dedb67b26f7904eea6727d4@fb.com"},"message":"Update the AppVeyor ocpwin cache URI (take 2)\n\nSummary: I'm 99% sure this will work this time\n\nReviewed By: samwgoldman\n\nDifferential Revision: D3633349\n\nfbshipit-source-id: f63819e6f21cfef10c3aa59b7985bd03fe554c96","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/5e2c0a5e2879c7788f9b71998753bf980ed35022"},{"sha":"38da9258758d89dd861c0e7f90f042811f8d32c5","author":{"name":"Avik Chaudhuri","email":"d23a2e04059a39e04f3b79afa202c62ae1632749@fb.com"},"message":"fix confusing global object errors\n\nSummary:\nFunction type annotations have their `this` slot open, so that they can monitor their calls and pass back the receivers of those calls as constraints on the functions/methods that they're typing.\n\nSuch function type annotations often appear in object types, and have unfortunate interactions with class method types or other kinds of bound methods, for which we considered `this` to be `mixed`. That was a mistake. The `this` of bound methods should really be `any`, because we truly don't care: `mixed` works in one direction but not in the other, and when function type annotations appear in invariant positions (like in object types) this difference becomes critical. Unfortunately the resulting errors are not only spurious but also near-impossible to debug without inside knowledge, even with traces.\n\nReviewed By: samwgoldman\n\nDifferential Revision: D3619932\n\nfbshipit-source-id: c7b3f36f1c9ec5cd04233a2fade94b971b5a198f","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/38da9258758d89dd861c0e7f90f042811f8d32c5"},{"sha":"12c9d0bd883253a52518326377608f9aaf3c99bf","author":{"name":"Pavel Volokitin","email":"99279627e74f94220c140ea0b18ca9126c5e9879@gmail.com"},"message":"Infer munged instance members.\n\nSummary:\nThe doc says that flow should be able to infer all types within a module. If `munge_underscores` is enabled, then private methods' params annotation should not be required I guess.\n\nI find myself writing a lot on annotations instead of allowing flow to infer types like this:\n\n```js\nexport default class Comp extends React.Component {\n  render() {\n    return this._render('hi');\n  }\n\n  _render(msg) {\n    return <Button onClick={this._handleClick}>{msg}</Button>;\n  }\n\n  _handleClick = (event) => {};\n}\n```\n\nI'm only starting to dive into flow. So this PR is just my best guess how to fix the problem :)\nCloses https://github.com/facebook/flow/pull/2013\n\nReviewed By: avikchaudhuri\n\nDifferential Revision: D3528117\n\nPulled By: gabelevi\n\nfbshipit-source-id: dcc31361308acd1e3ba5be9680047f3cd29210c3","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/12c9d0bd883253a52518326377608f9aaf3c99bf"},{"sha":"bc4a03e55a0198372b1619a0de1a019b92b95add","author":{"name":"Gabe Levi","email":"74afe5e6f5651d063dedb67b26f7904eea6727d4@fb.com"},"message":"[hack] Correct usage of posix_fallocate\n\nSummary:\nposix_fallocate takes an offset, not a pointer. The bug that the\nprevious diff tried to fix was that `memfd_reserve` was being called in the\nfirst place even though the memory that we were trying to reserve was not\nactually in memfd at all.\n\nReviewed By: andrewjkennedy, dlreeves\n\nDifferential Revision: D3623164\n\nfbshipit-source-id: 9feb491faa865d3e14f07df8cb674ec5916faabd","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/bc4a03e55a0198372b1619a0de1a019b92b95add"},{"sha":"1ffb5bb13b8207c0de6d5b90627f7d2e0a8f52e7","author":{"name":"Gabe Levi","email":"5d449a12c794afe43d7f3b9deb4c34adddd17ff2@gmail.com"},"message":"[hack] Fix Windows build after memfd_reserve fixes\n\nSummary:\nWe deleted a `memfd_reserve` call inside of `hh_collect` since it was causing trouble. However this broke the Windows build (thanks AppVeyor for noticing!). The problem is that Windows needs to reserve the memory inside of `hh_collect`.\n\nSo this is hopefully the last diff to address this. This restores the `memfd_reserve` behavior, but only for Windows. It also renames the function a little to make it clear that it has nothing to do with `memfd`.\nCloses https://github.com/facebook/flow/pull/2154\n\nReviewed By: dlreeves\n\nDifferential Revision: D3635770\n\nPulled By: gabelevi\n\nfbshipit-source-id: 5c2f7664025923599b1991adaac80558a5d47c23","distinct":false,"url":"https://api.github.com/repos/gabelevi/flow/commits/1ffb5bb13b8207c0de6d5b90627f7d2e0a8f52e7"}]}
{"actor":{"display_login":"gabelevi"}}