{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":110274488,"defaultBranch":"main","name":"pyre-check","ownerLogin":"facebook","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2017-11-10T17:31:36.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/69631?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1719420925.0","currentOid":""},"activityList":{"items":[{"before":"867e9f1eadeca1b563dfb119f540887b4fc9a9f8","after":"f9b5193b70d76cf0fc31cc5d5de45a7e4243cf7f","ref":"refs/heads/main","pushedAt":"2024-06-28T18:42:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"split formatStringTest\n\nSummary: this makes it easier to debug because you can now run test cases individually\n\nReviewed By: grievejia\n\nDifferential Revision: D59161277\n\nfbshipit-source-id: 9a784ea68234462189c930ce16f8233b8d1f3820","shortMessageHtmlLink":"split formatStringTest"}},{"before":"c4cc860ca2351d3a769c5a3065883906b6b97a2d","after":"02875ddca33a6c6bdeb87a90c04b8f32f1363f74","ref":"refs/heads/gh-pages","pushedAt":"2024-06-28T03:58:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ facebook/pyre-check@867e9f1eadeca1b563dfb119f540887b4fc9a9f8 πŸš€","shortMessageHtmlLink":"Deploying to gh-pages from @ 867e9f1 πŸš€"}},{"before":"3fa8fcf808a080fce4596576c37a533d59c755d0","after":"867e9f1eadeca1b563dfb119f540887b4fc9a9f8","ref":"refs/heads/main","pushedAt":"2024-06-28T03:56:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"fix some variable names\n\nSummary: return_annotation is actually a Type.t so I'd rather call it return_type\n\nReviewed By: grievejia\n\nDifferential Revision: D59129020\n\nfbshipit-source-id: 7bc983cbe0813379e8ff67809f2c1631d036abc9","shortMessageHtmlLink":"fix some variable names"}},{"before":"85c533bd6a378e0c693f36fd9587278f9c7d7d6f","after":"c4cc860ca2351d3a769c5a3065883906b6b97a2d","ref":"refs/heads/gh-pages","pushedAt":"2024-06-28T00:12:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ facebook/pyre-check@3fa8fcf808a080fce4596576c37a533d59c755d0 πŸš€","shortMessageHtmlLink":"Deploying to gh-pages from @ 3fa8fcf πŸš€"}},{"before":"5e39b31e3182df401b9d505be3b039b0bab24a6e","after":"3fa8fcf808a080fce4596576c37a533d59c755d0","ref":"refs/heads/main","pushedAt":"2024-06-28T00:10:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Rewrite getting started documentation for FBCode based on per-target checking in staticdoc site\n\nReviewed By: inseokhwang\n\nDifferential Revision: D59094347\n\nfbshipit-source-id: d40e0635db6d87298a0813cb8005ff47ef2cc073","shortMessageHtmlLink":"Rewrite getting started documentation for FBCode based on per-target …"}},{"before":"ee34084f5e3f3f6c933228b2bdb155677979e8f8","after":"85c533bd6a378e0c693f36fd9587278f9c7d7d6f","ref":"refs/heads/gh-pages","pushedAt":"2024-06-27T21:39:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ facebook/pyre-check@5e39b31e3182df401b9d505be3b039b0bab24a6e πŸš€","shortMessageHtmlLink":"Deploying to gh-pages from @ 5e39b31 πŸš€"}},{"before":"34ea3823ed208060e291befa2b4fce9e7bd139cc","after":"5e39b31e3182df401b9d505be3b039b0bab24a6e","ref":"refs/heads/main","pushedAt":"2024-06-27T21:37:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"change location for invalid implicit return error message\n\nSummary:\npreviously, \"invalid return type\" messages for implicit returns just highlighted the last statement in the function. this seems confusing, since there isn't really anything wrong with the highlighted line.\n\nfor example\n\n```\ndef func1(x: int) -> NoReturn:\n if x != 0:\n sys.exit(1)\n```\n\n`sys.exit(1)` would get highlighted in this example\n\nthis diff does the following:\n- when a return type annotation exists, highlight that instead of the last statement when creating an invalid implicit return error\n- for noreturn/never invalid returns specifically, add text in the error message that mentions the returned value is implicit, like we do for other return types\n\nReviewed By: grievejia\n\nDifferential Revision: D59115083\n\nfbshipit-source-id: 8d0a2e34947a7abdedb20e267672f3b7cb84e6a3","shortMessageHtmlLink":"change location for invalid implicit return error message"}},{"before":"4f9c6c77c1ced799c5d65a7b224777bd0ba88d25","after":"ee34084f5e3f3f6c933228b2bdb155677979e8f8","ref":"refs/heads/gh-pages","pushedAt":"2024-06-27T21:15:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ facebook/pyre-check@34ea3823ed208060e291befa2b4fce9e7bd139cc πŸš€","shortMessageHtmlLink":"Deploying to gh-pages from @ 34ea382 πŸš€"}},{"before":"0fc986b13062efb51b3ccebdc15af6dc1146bf56","after":"34ea3823ed208060e291befa2b4fce9e7bd139cc","ref":"refs/heads/main","pushedAt":"2024-06-27T21:13:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"fix typo in typecheck.ml\n\nSummary: This function doesn't exist anymore, I renamed it\n\nDifferential Revision: D59115477\n\nfbshipit-source-id: e53e9a4597945febc883644a90d0e7b54447e304","shortMessageHtmlLink":"fix typo in typecheck.ml"}},{"before":"1f67234f10d1ce85b6e28123caf90a7f21efa405","after":"4f9c6c77c1ced799c5d65a7b224777bd0ba88d25","ref":"refs/heads/gh-pages","pushedAt":"2024-06-27T19:32:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ facebook/pyre-check@0fc986b13062efb51b3ccebdc15af6dc1146bf56 πŸš€","shortMessageHtmlLink":"Deploying to gh-pages from @ 0fc986b πŸš€"}},{"before":"51684483b27ef91aeeb6953cf8ed1cc0c686a928","after":"0fc986b13062efb51b3ccebdc15af6dc1146bf56","ref":"refs/heads/main","pushedAt":"2024-06-27T19:30:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Allow specifying a callable as obscure with `@Obscure`\n\nSummary:\nThis diff allows .pysa files to specify functions as obscure using `Obscure`.\nThis will be used to mark all `SkipAnalysis` functions as obscure.\n\nReviewed By: tianhan0\n\nDifferential Revision: D59107355\n\nfbshipit-source-id: d965a1ee0f82012f6b739ec9049070aa449bd264","shortMessageHtmlLink":"Allow specifying a callable as obscure with @Obscure"}},{"before":"bfd7a1965d409edb705b72d71c8dcd4a035aeb25","after":"1f67234f10d1ce85b6e28123caf90a7f21efa405","ref":"refs/heads/gh-pages","pushedAt":"2024-06-27T18:49:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ facebook/pyre-check@51684483b27ef91aeeb6953cf8ed1cc0c686a928 πŸš€","shortMessageHtmlLink":"Deploying to gh-pages from @ 5168448 πŸš€"}},{"before":"d9933a6548996e6752e615b351d9ee3e7d33de1e","after":"51684483b27ef91aeeb6953cf8ed1cc0c686a928","ref":"refs/heads/main","pushedAt":"2024-06-27T18:48:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Stop indexing triggered sinks based on call site locations\n\nSummary:\nSince the triggered sinks that are created by the forward analysis are indexed\nby expressions, which already have locations, there is no need to additionally\nindex based on call site locations.\n\nReviewed By: arthaud\n\nDifferential Revision: D59069853\n\nfbshipit-source-id: da99356a28e5045d3fd92a4c8676f8030f719c43","shortMessageHtmlLink":"Stop indexing triggered sinks based on call site locations"}},{"before":"2e80101aed420734e37563359312c9bed8d9ac13","after":"bfd7a1965d409edb705b72d71c8dcd4a035aeb25","ref":"refs/heads/gh-pages","pushedAt":"2024-06-27T16:58:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ facebook/pyre-check@d9933a6548996e6752e615b351d9ee3e7d33de1e πŸš€","shortMessageHtmlLink":"Deploying to gh-pages from @ d9933a6 πŸš€"}},{"before":"fa6f81c7dcce8bb172cd7f9fe5c7565412857b0d","after":"d9933a6548996e6752e615b351d9ee3e7d33de1e","ref":"refs/heads/main","pushedAt":"2024-06-27T16:56:32.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Fix ppx issue with Response.Ok name collision\n\nSummary:\nI'm trying to upgrade ppx_deriving_yojson, but ran into an issue with the\nResponse.Ok constructor. This ppx generates code that returns a result, which\nuses the Ok constructor as well.\n\nThis clash causes the generated code to fail to compile, because the two Ok\nconstructors get confused.\n\nThis diff works around the issue by renaming the constructor to Ok_ and using\nthe [name ...] annotation to keep the same JSON output.\n\nReviewed By: yangdanny97\n\nDifferential Revision: D59072598\n\nfbshipit-source-id: 9ca44e2b0c72a1b8945c0345a5f8b6a7b7481486","shortMessageHtmlLink":"Fix ppx issue with Response.Ok name collision"}},{"before":"679d7aafa4e5c7415ed5de7615464a3eeb3414cb","after":"2e80101aed420734e37563359312c9bed8d9ac13","ref":"refs/heads/gh-pages","pushedAt":"2024-06-27T15:46:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ facebook/pyre-check@fa6f81c7dcce8bb172cd7f9fe5c7565412857b0d πŸš€","shortMessageHtmlLink":"Deploying to gh-pages from @ fa6f81c πŸš€"}},{"before":"d048efe288ee3f6bf8bf660ee01e8d80f5008f6a","after":"fa6f81c7dcce8bb172cd7f9fe5c7565412857b0d","ref":"refs/heads/main","pushedAt":"2024-06-27T15:44:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Stop increasing the trace length for string-related call sites in the backward analysis\n\nReviewed By: arthaud\n\nDifferential Revision: D58876336\n\nfbshipit-source-id: 3c247291981c44b2a9b107d1d679f2039dab3ead","shortMessageHtmlLink":"Stop increasing the trace length for string-related call sites in the…"}},{"before":"befdec084f217bb32928c6baca668e4b0591a9a0","after":"d048efe288ee3f6bf8bf660ee01e8d80f5008f6a","ref":"refs/heads/main","pushedAt":"2024-06-26T20:48:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Fix the false negative that fails to propagate the triggered sinks on actual arguments at some call sites\n\nSummary:\n# Problem\nFor context, the triggered sinks are created by the forward analysis (which are\nattached to actual arguments at a call site), but they need to be propagated by\nthe backward analysis. Hence, we store and pass the triggered sinks from the\nforward analysis to the backward analysis.\n\nNow, the problem is at the data structure (i.e., `TriggeredSinkLocationMap.t`)\nthat is used during the pass. Currently, we use a map from `AccessPath.Root` to\ntriggered sinks. For context, `AccessPath.Root` is used to represent the\nvariables that the taint analysis cares about -- such variables may have taint.\nUsing a map from `AccessPath.Root` to taints causes false negatives, because it\nis possible that at a call site, the actual arguments can't be resolved into\n`AccessPath.Root`. As a result, such taint can't be stored and passed to the\nbackward analysis.\n\n# Solution 1 (This Diff)\nThe key change is the value type of `TriggeredSinkLocationMap.t`. It changed\nfrom a `BackwardState` (i.e., a map from `AccessPath.Root`s to taint trees) to\na map from expressions to taint trees. This *directly* solves the false\nnegative when an expression can't be resolved into `AccessPath.Root`, because\nthe core problem is to pass taints (triggered sinks) on expressions from the\nforward analysis to the backward analysis.\n\n# Solution 2\nAn alternative solution is to map the actual arguments at call sites into\n\"fake\" `AccessPath.Root`, so that any actual argument is guaranteed to be\nresolved into an `AccessPath.Root`. Hence, all triggered sinks can now be\nstored and passed to the backward analysis.\n\nThis approach also works, but\n- it is a bit less direct than Solution 1, because the core problem is to pass\n taints on *expressions* (rather than `AccessPath.Root`, which is a subset of\n expressions) from the forward analysis to the backward analysis.\n- it requires to maintain the extra code to map actual arguments to \"fake\"\n `AccessPath.Root`.\n\nReviewed By: arthaud\n\nDifferential Revision: D58822673\n\nfbshipit-source-id: d79d0cc53f0568fd58fe024c49e3c43ed24a666f","shortMessageHtmlLink":"Fix the false negative that fails to propagate the triggered sinks on…"}},{"before":"9cfba57bd2f158324edf8cd06dbcf13c3161f855","after":"befdec084f217bb32928c6baca668e4b0591a9a0","ref":"refs/heads/main","pushedAt":"2024-06-26T19:57:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Rename add to add_and_simplify in constraint generation\n\nSummary:\nContext:\n\nSince we solve constraints greedily in our constraint generation process, calling the function that adds and solves constraints on the fly just `add` is misleading. Instead, the name should indicate that we are also trying to solve.\n\nIf we look at the signature of the function, we can see that goes from constraint set to constraint set. Which means that we do not necessarily end up resolving every constraint in the set, which is why the new name indicates that.\n\nReviewed By: stroxler\n\nDifferential Revision: D59021457\n\nfbshipit-source-id: d1b2facc6b2d3fb4b747186ad776336c34e29b8c","shortMessageHtmlLink":"Rename add to add_and_simplify in constraint generation"}},{"before":"9cfba57bd2f158324edf8cd06dbcf13c3161f855","after":null,"ref":"refs/tags/0.9.22","pushedAt":"2024-06-26T16:55:09.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"arthaud","name":"Maxime Arthaud","path":"/arthaud","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2151557?s=80&v=4"}},{"before":"5896c2fe0a5e2794eab3e4c84d6f0bb262fb8336","after":"679d7aafa4e5c7415ed5de7615464a3eeb3414cb","ref":"refs/heads/gh-pages","pushedAt":"2024-06-26T16:38:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ facebook/pyre-check@9cfba57bd2f158324edf8cd06dbcf13c3161f855 πŸš€","shortMessageHtmlLink":"Deploying to gh-pages from @ 9cfba57 πŸš€"}},{"before":"ed8cb98e959157f9a3d82a58e8da4064a1446ab6","after":"9cfba57bd2f158324edf8cd06dbcf13c3161f855","ref":"refs/heads/main","pushedAt":"2024-06-26T16:36:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"sanitize type annotation in error message\n\nSummary:\nas pointed out by grievejia some things like type variables are rendered poorly when using `Expression.show`, so this diff sanitizes them first\n\nsee the conformance output for changes\n\nReviewed By: grievejia\n\nDifferential Revision: D59039786\n\nfbshipit-source-id: d9b20d472bec2fdd1a8af17c80cd3b1e2558f34b","shortMessageHtmlLink":"sanitize type annotation in error message"}},{"before":"b84a34fc6ab4c12cdcf18594d1e7f229bdee3b9e","after":"5896c2fe0a5e2794eab3e4c84d6f0bb262fb8336","ref":"refs/heads/gh-pages","pushedAt":"2024-06-26T15:22:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ facebook/pyre-check@ed8cb98e959157f9a3d82a58e8da4064a1446ab6 πŸš€","shortMessageHtmlLink":"Deploying to gh-pages from @ ed8cb98 πŸš€"}},{"before":"30997f558cf2b6bafca617b160ec99b2ad04e190","after":"ed8cb98e959157f9a3d82a58e8da4064a1446ab6","ref":"refs/heads/main","pushedAt":"2024-06-26T15:20:34.000Z","pushType":"push","commitsCount":10,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Rename ParameterVariadicTypeVariable to FromParamSpec\n\nSummary:\nThis type, which was frequently written out as the ultra-verbose name\n`Type.Callable.ParameterVariadicTypeVariable`, actually represents a parameters\n\"list\" that includes a ParamSpec (either a bare param spec like\n`Callable[P, R]` or a concatenation like `Callable[Concatenate[T, P], R]`).\n\nThe name `FromParamSpec` seems much clearer; I say \"'from' param spec\" to\nemphasize that it is built from a ParamSpec, but it could potentially\nconcatenate concrete positional-only args to the left.\n\nReviewed By: migeed-z\n\nDifferential Revision: D59026652\n\nfbshipit-source-id: 6d5c174123dbd5827647bb0eacb6d0a47db5bff7","shortMessageHtmlLink":"Rename ParameterVariadicTypeVariable to FromParamSpec"}},{"before":"6c44ee3b0810420c0565e47d4daa644c7df27520","after":"b84a34fc6ab4c12cdcf18594d1e7f229bdee3b9e","ref":"refs/heads/gh-pages","pushedAt":"2024-06-26T02:48:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ facebook/pyre-check@30997f558cf2b6bafca617b160ec99b2ad04e190 πŸš€","shortMessageHtmlLink":"Deploying to gh-pages from @ 30997f5 πŸš€"}},{"before":"f4c57ec2ebc921d786fcd738e5a0f1b505c35089","after":"30997f558cf2b6bafca617b160ec99b2ad04e190","ref":"refs/heads/main","pushedAt":"2024-06-26T02:46:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"fix concise error messages for some types\n\nSummary:\nwhen printing types in concise mode, the `strip_qualification` helper splits identifiers on `.` and takes the last part, turning `typing.Tuple` into `Tuple`, etc.\n\nit's only intended to be used for identifiers, but there are some places in the codebase which render a raw type annotation (expression) as a string and pass it to the pretty printer as a primitive\n\nfor example:\n\nhttps://www.internalfb.com/code/fbsource/[c3c752f598b062c75b6a6a3f892334e962fd42ae]/fbcode/tools/pyre/source/analysis/typeCheck.ml?lines=590\n\nthis means that `Callable[[...], object]` actually gets passed to the error message as `Primitive \"Callable[[...], object]\"`, which gets treated as an identifier and stripped down to `], object]`\n\nthis diff adds a new `InvalidTypeAnnotationExpression` variant to `invalid_type_kind` which takes an expression instead of a resolved type, and renames the original `InvalidType` to `InvalidTypeAnnotation`.\n\nthe expression can now be passed in directly without first turning it into a string and wrapping it with `Type.Primitive`, solving our problem.\n\nthere were two cases of enum-related errors which pass a type to this error, those remain on the old error format since they don't do this weird conversion.\n\ntwo alternatives I thought of:\n1. just pass the resolved type to the original error instead of stringifying the expression - this won't work for a lot of cases since malformed types can resolve to `unknown` and display as such, making the error message useless since it doesn't match what the user wrote\n2. make `strip_qualification` skip identifiers with `...` - if `Type.Primitive (Expression.show expression)` is a hack, that feels like a hack on top of a hack\n\nReviewed By: migeed-z\n\nDifferential Revision: D59023970\n\nfbshipit-source-id: e6e4a09283e588d5ae76224fae77dad7e693916f","shortMessageHtmlLink":"fix concise error messages for some types"}},{"before":"a324480649d0f8fb98a378358b94541d2a6d65a8","after":"f4c57ec2ebc921d786fcd738e5a0f1b505c35089","ref":"refs/heads/main","pushedAt":"2024-06-26T01:25:42.000Z","pushType":"push","commitsCount":8,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Rename GlobalTransfoms functor instances\n\nSummary:\nUse TypeVar, ParamSpec, TypeVarTuple instead of\nUnary, ParameterVariadic, and TupleVariadic.\n\nReviewed By: grievejia\n\nDifferential Revision: D59005123\n\nfbshipit-source-id: 0ce9e782429cfa35fb4ea2720b0ab611decdd8d6","shortMessageHtmlLink":"Rename GlobalTransfoms functor instances"}},{"before":"b2442ebdb224b020517d101813096ca88a9cc7c1","after":"6c44ee3b0810420c0565e47d4daa644c7df27520","ref":"refs/heads/gh-pages","pushedAt":"2024-06-24T21:53:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ facebook/pyre-check@a324480649d0f8fb98a378358b94541d2a6d65a8 πŸš€","shortMessageHtmlLink":"Deploying to gh-pages from @ a324480 πŸš€"}},{"before":"fa49a5e9d955d8aaa16f29510f8a7aa2d5883c91","after":"a324480649d0f8fb98a378358b94541d2a6d65a8","ref":"refs/heads/main","pushedAt":"2024-06-24T21:51:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"add test case for literal string join\n\nSummary:\nthis diff a test case from the conformance suite showing our current incorrect behavior\n\npyre should use this typeshed stub\n\nhttps://www.internalfb.com/code/fbsource/[b1b25cfd833eed214dc0c3cafff465494fdadf15]/fbcode/tools/pyre/stubs/typeshed/typeshed/stdlib/builtins.pyi?lines=484\n\nto ensure that joining literal strings results in another literal string.\n\nit's not working because pyre considers `Tuple[LiteralString, LiteralString]` to be incompatible with `Iterable[LiteralString]`: https://fburl.com/pyre/3x4be17h\n\nReviewed By: stroxler\n\nDifferential Revision: D58888948\n\nfbshipit-source-id: 13229ed79a5e3ec0f564a11098b0c023b8130523","shortMessageHtmlLink":"add test case for literal string join"}},{"before":"6242be4cb9cfa1b6ffd5baa8a0cd93b3df4ac496","after":"b2442ebdb224b020517d101813096ca88a9cc7c1","ref":"refs/heads/gh-pages","pushedAt":"2024-06-24T20:30:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ facebook/pyre-check@fa49a5e9d955d8aaa16f29510f8a7aa2d5883c91 πŸš€","shortMessageHtmlLink":"Deploying to gh-pages from @ fa49a5e πŸš€"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEciQJkwA","startCursor":null,"endCursor":null}},"title":"Activity Β· facebook/pyre-check"}