{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":491205746,"defaultBranch":"main","name":"kotlin_ast_tools","ownerLogin":"fbsamples","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-05-11T17:15:08.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1541324?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1652815855.650413","currentOid":""},"activityList":{"items":[{"before":"f49ab3a4b385dd43336f2b53a448ebf4f6ab2e16","after":"cc17e0603cbeea2ce838a8256600de38514ccdd2","ref":"refs/heads/main","pushedAt":"2024-09-15T10:27:29.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":"Make type matchers match on supertypes\n\nSummary:\n`#a{type=com.facebook.Foo}#` will now match whether `a` is a Foo or it extends Foo.\n\nThis implements https://fb.workplace.com/groups/mobilecodemods/posts/1615972486008251\n\nReviewed By: strulovich\n\nDifferential Revision:\nD62597148\n\nPrivacy Context Container: L1246338\n\nfbshipit-source-id: d38af4e642e76367caff2e807e666b9e780ae37b","shortMessageHtmlLink":"Make type matchers match on supertypes"}},{"before":"58e0e34a79929e798d14452f0be5373eab65dc8e","after":"f49ab3a4b385dd43336f2b53a448ebf4f6ab2e16","ref":"refs/heads/main","pushedAt":"2024-08-12T21:02:33.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":"Remove more unused code from PsiActions\n\nDifferential Revision: D61036430\n\nfbshipit-source-id: 2abfabce78ee6f94cd8bd788071f035ecac42c75","shortMessageHtmlLink":"Remove more unused code from PsiActions"}},{"before":"94d1a5f119bd4c52d6f8bfc365c264f5ca8030b9","after":"58e0e34a79929e798d14452f0be5373eab65dc8e","ref":"refs/heads/main","pushedAt":"2024-08-12T16:17: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":"Replace PsiActions.withAnnotation with writer usages\n\nSummary: The useful logic from this method was migrated to the writer classes, we can now update all code to use writers.\n\nDifferential Revision: D61002141\n\nfbshipit-source-id: a2447eb655eb92e8a69bc72cc58cc64a59c371d2","shortMessageHtmlLink":"Replace PsiActions.withAnnotation with writer usages"}},{"before":"e84ecf0c6b8b75a3c91607ad41efae5b23d53d8c","after":"94d1a5f119bd4c52d6f8bfc365c264f5ca8030b9","ref":"refs/heads/main","pushedAt":"2024-07-02T21:48:37.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 project to be set statically\n\nSummary: when using ast tools from Android Studio, we see a failure with the crated `KotlinCoreEnvironment`. Since it's just created to get the PsiManager, allow to statically set it.\n\nReviewed By: jsendros\n\nDifferential Revision: D59261082\n\nfbshipit-source-id: fb2704a9ef09e0a5adb3fc74e39bcd05dd5e5278","shortMessageHtmlLink":"Allow project to be set statically"}},{"before":"bcf3e5abe57568e9553b5475ea7011b91972b728","after":"e84ecf0c6b8b75a3c91607ad41efae5b23d53d8c","ref":"refs/heads/main","pushedAt":"2024-06-05T17:38:34.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":"Rank and resort matcher functions to avoid doing expensive checks first\n\nSummary:\nOnce we add type resolving in some places we might have super slow actions in the matcher. In those cases, we want faster actions to run fast.\n\nThe ideal formula would be based on the average run time and average success rate (at stoping the matcher), I was too lazy to do that, so I just sort by time, and average it with all previous runs. This does the job, as the test shows.\n\nReviewed By: jsendros\n\nDifferential Revision: D58187861\n\nfbshipit-source-id: 7faa5cbe62720d4b94dab7feefd477a564048fc9","shortMessageHtmlLink":"Rank and resort matcher functions to avoid doing expensive checks first"}},{"before":"bf45ce88a88eb50814d80e6535cc477bddf10c8a","after":"bcf3e5abe57568e9553b5475ea7011b91972b728","ref":"refs/heads/main","pushedAt":"2024-06-05T16:07:22.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":"Pass file name when parsing Java file into Psi\n\nSummary: We already to this for Kotlin parsing, and this is useful when one needs to retrieve the file name from the tree.\n\nReviewed By: jsendros\n\nDifferential Revision: D58187141\n\nfbshipit-source-id: f8fce63ac8f803e27acb95c60fe713dc436b958a","shortMessageHtmlLink":"Pass file name when parsing Java file into Psi"}},{"before":"88f84d407b808813322aee35253d211ee7d1189a","after":"bf45ce88a88eb50814d80e6535cc477bddf10c8a","ref":"refs/heads/main","pushedAt":"2024-06-03T21:47:15.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 PsiAstMatcher to impl and interface\n\nSummary: This cleans up the weird inheritance generated in the previous diff.\n\nReviewed By: jsendros\n\nDifferential Revision: D58094114\n\nfbshipit-source-id: c63d6ab82c8d8d7ef126555e190ab523f8008a60","shortMessageHtmlLink":"Split PsiAstMatcher to impl and interface"}},{"before":"4a75037196f3003220ee18b86c20a6b7255f72c2","after":"88f84d407b808813322aee35253d211ee7d1189a","ref":"refs/heads/main","pushedAt":"2024-06-03T20:05:11.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":"Support option receivers in Kotlin matching\n\nSummary:\nThis handles an important case which is needed to match all method calls, even when the receivers is implicit.\n\nTo do this we need to parse a qualified expression when building the matcher, but make a matcher which takes a qualified or unqualfied call.\n\n- I need to clean up the weird opening of the class still\n- I need to add support for property calls as well\n\nReviewed By: jsendros\n\nDifferential Revision: D58091884\n\nfbshipit-source-id: 63e88ca0e74d9df821b9bde700a485d182137228","shortMessageHtmlLink":"Support option receivers in Kotlin matching"}},{"before":"179334eccb19516c141fed6a09765b3f59044959","after":"4a75037196f3003220ee18b86c20a6b7255f72c2","ref":"refs/heads/main","pushedAt":"2024-06-03T18:39: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":"Expose `matches` as a public method\n\nSummary: This should actually be part of the public API, it will be very useful for making linters and other actions.\n\nReviewed By: jsendros\n\nDifferential Revision: D58032007\n\nfbshipit-source-id: 378f364c4e5fa609d116eb247203f1ae41b650d5","shortMessageHtmlLink":"Expose matches as a public method"}},{"before":"07ce3561be7ffeddc3055454608c3b169ce184a1","after":"179334eccb19516c141fed6a09765b3f59044959","ref":"refs/heads/main","pushedAt":"2024-05-31T18:01:07.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 generic arg in MatchResult to save on unsafe casts for users\n\nSummary: I noticed that down the line this will replace a bunch of unsafe casts in APIs, so I think I'll go for it.\n\nReviewed By: jsendros\n\nDifferential Revision: D58021291\n\nfbshipit-source-id: 57a302b848aa6ef3373bf52d3bc705bc05ed09e9","shortMessageHtmlLink":"Add generic arg in MatchResult to save on unsafe casts for users"}},{"before":"4a3b19308e2094ff4a9fd70c4dd6bb631759bede","after":"07ce3561be7ffeddc3055454608c3b169ce184a1","ref":"refs/heads/main","pushedAt":"2024-05-20T17:30: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":"Add matched node to MatchResult\n\nSummary: Easier to work with\n\nReviewed By: jsendros\n\nDifferential Revision: D57500458\n\nfbshipit-source-id: 310a11fc575e91b462d389086757e3015a2bf513","shortMessageHtmlLink":"Add matched node to MatchResult"}},{"before":"30f431e550660ed96ace06bf84ef334b9cc970af","after":"4a3b19308e2094ff4a9fd70c4dd6bb631759bede","ref":"refs/heads/main","pushedAt":"2024-05-17T21:42:36.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":"Introduce a MatchResult class for PsiAstMatchers\n\nSummary: This will be better and more similar to regex.\n\nReviewed By: jsendros\n\nDifferential Revision: D56049717\n\nfbshipit-source-id: a228bd3bfa02ede21f6e56a60324db58260c410f","shortMessageHtmlLink":"Introduce a MatchResult class for PsiAstMatchers"}},{"before":"4d55445c3703da95afb4b893712bc0d79dca57d7","after":"30f431e550660ed96ace06bf84ef334b9cc970af","ref":"refs/heads/main","pushedAt":"2024-04-09T19:56:58.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":"Pass Kotlin file name when building KtFile\n\nSummary: This will make some things behave more as expected in some future diffs.\n\nReviewed By: jsendros\n\nDifferential Revision: D55921628\n\nfbshipit-source-id: 6f95743e08173e9e41b361a663180f72eec92521","shortMessageHtmlLink":"Pass Kotlin file name when building KtFile"}},{"before":"49558649f3d37c2e5c29a5fca0c198a6e8179d8c","after":"4d55445c3703da95afb4b893712bc0d79dca57d7","ref":"refs/heads/main","pushedAt":"2024-03-26T23:45:35.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 issues when matching on method calls with variables in Java\n\nSummary:\nThis came out pretty complicated.\nA `PsiReferenceExpression` can split into two `PsiReferenceExpression` or an `PsiReferenceExpression` and `PsiIdentifier`. And we need to deal a bunch of different cases, since if the user gives us `a.#b#` we need to load a variable that needs to match either a `PsiIdentifier` or `PsiReferenceExpression` and this means we need to a trick we we build a matcher that looks for `PsiElement` and then verifies the type.\n\nI don't know of an easier way to do it for now.\n\nReviewed By: jsendros\n\nDifferential Revision: D55351567\n\nfbshipit-source-id: 2066865ed2d70b26444b25d50ac1898509096d13","shortMessageHtmlLink":"Fix issues when matching on method calls with variables in Java"}},{"before":"ad5207a7b889c65f7e083bb6a1ce850374d6ceb4","after":"49558649f3d37c2e5c29a5fca0c198a6e8179d8c","ref":"refs/heads/main","pushedAt":"2024-03-25T16:24:59.000Z","pushType":"push","commitsCount":3,"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 support for parenthesis expressions\n\nSummary: As title.\n\nReviewed By: jsendros\n\nDifferential Revision: D55317506\n\nfbshipit-source-id: 47fef8c0731e736960096021c6b84d227dc89e81","shortMessageHtmlLink":"Add support for parenthesis expressions"}},{"before":"c6e03377f0959febfec8a7699f8a66920dd07bbd","after":"ad5207a7b889c65f7e083bb6a1ce850374d6ceb4","ref":"refs/heads/main","pushedAt":"2024-03-21T22:51:16.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 simple support for property types\n\nSummary: This was not supported yet.\n\nDifferential Revision: D55215451\n\nfbshipit-source-id: e775957e4f3fbf7e5042d0e1aecad966f4b9af4f","shortMessageHtmlLink":"Add simple support for property types"}},{"before":"c98a9f5c8fe8cb22d662f97ee4eccb8b74b27f92","after":"c6e03377f0959febfec8a7699f8a66920dd07bbd","ref":"refs/heads/main","pushedAt":"2024-03-15T17:20:54.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":"Various cleanups in replace template to reduce code\n\nSummary: Cleaning some code and mostly merging JvmFile code that was duplicated for Java and Kotlin.\n\nReviewed By: ermattt\n\nDifferential Revision: D54931919\n\nfbshipit-source-id: a130cc13f3c2b59e535b8e86e480d709c3e849b0","shortMessageHtmlLink":"Various cleanups in replace template to reduce code"}},{"before":"3ac2087eac5e700f7d6be8cc866ff5bcea966e76","after":"c98a9f5c8fe8cb22d662f97ee4eccb8b74b27f92","ref":"refs/heads/main","pushedAt":"2024-03-14T16:27:47.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":"Add support for lambda expressions in PsiAstTemplate\n\nSummary: As title\n\nReviewed By: jsendros\n\nDifferential Revision: D54884938\n\nfbshipit-source-id: f12a21e59baf288ab6f1da588982ad9374e5e6bb","shortMessageHtmlLink":"Add support for lambda expressions in PsiAstTemplate"}},{"before":"36f45d2a1329216c30b38547b9a2856bfd97aa7c","after":"3ac2087eac5e700f7d6be8cc866ff5bcea966e76","ref":"refs/heads/main","pushedAt":"2024-03-11T15:52:54.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 a bug with list matching\n\nSummary: This was introduced by recent changes to support optional matches, but was actually incorrect.\n\nDifferential Revision: D54709494\n\nfbshipit-source-id: eeb2351ca2bd7d42c003c657fb10c1e60b9dcb2a","shortMessageHtmlLink":"Fix a bug with list matching"}},{"before":"c2e7a5ec019f92374e5be51d367afa4885697204","after":"36f45d2a1329216c30b38547b9a2856bfd97aa7c","ref":"refs/heads/main","pushedAt":"2024-03-09T04:57:49.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 bug in Ast templates not replacing properly\n\nSummary: Replacing in templates did not work if the argument had parameters (such as `text` matching)\n\nReviewed By: edelron\n\nDifferential Revision: D54685879\n\nfbshipit-source-id: 04284381eccfa4d8f66101ad4c81b8ba19851823","shortMessageHtmlLink":"Fix bug in Ast templates not replacing properly"}},{"before":"2fcef26f530ea6491c36efe3016c925fbf689234","after":"c2e7a5ec019f92374e5be51d367afa4885697204","ref":"refs/heads/main","pushedAt":"2024-03-08T17:53:29.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 support for matching on type in templates\n\nSummary: Adding a `type` argument that can be passed into the template. This requires adding a dependency to resolve types. For now it's only in the test and we will add it for Editus and Koast soon\n\nReviewed By: jsendros\n\nDifferential Revision: D54665260\n\nfbshipit-source-id: 41553b62441b280508da62a03032fdc182f68311","shortMessageHtmlLink":"Add support for matching on type in templates"}},{"before":"712dafc50eed1a52e78a5f73ff28a3f1096a191b","after":"2fcef26f530ea6491c36efe3016c925fbf689234","ref":"refs/heads/main","pushedAt":"2024-03-07T21:40:19.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 PsiAstTemplateKtTest.kt to PsiAstTemplateTest.kt\n\nSummary: This is a class now. It used to be a bunch of top level functions. Renaming to be IDE friendly.\n\nReviewed By: jsendros\n\nDifferential Revision: D54649384\n\nfbshipit-source-id: be28dd292c14650828c679b27afc850011710c5b","shortMessageHtmlLink":"Rename PsiAstTemplateKtTest.kt to PsiAstTemplateTest.kt"}},{"before":"834a95d02679b7eae460e90c860db0041c5b830a","after":"712dafc50eed1a52e78a5f73ff28a3f1096a191b","ref":"refs/heads/main","pushedAt":"2024-03-07T20:50:20.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":"Make PsiAstTemplateParser a class\n\nSummary: This looks more explicit to use, but it will let us passing an interface to resolve types in the next diff.\n\nReviewed By: jsendros\n\nDifferential Revision: D54645115\n\nfbshipit-source-id: 832f2ce11a76a4a711f5a878bf241aa1cb91a746","shortMessageHtmlLink":"Make PsiAstTemplateParser a class"}},{"before":"076fd26bec9a6d4f63982e19cbbd61dcc3b344d9","after":"834a95d02679b7eae460e90c860db0041c5b830a","ref":"refs/heads/main","pushedAt":"2024-03-07T19:28:26.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":"Move main template parsing methods to their own class\n\nSummary: These will need to be an an object to get some dependencies. First let's move them to their own file.\n\nDifferential Revision: D54600443\n\nfbshipit-source-id: 853185e1bfb2c989fd350b8666325c563cc4bb19","shortMessageHtmlLink":"Move main template parsing methods to their own class"}},{"before":"43681d092b378233b9ba3246b5d3949194a3b55f","after":"076fd26bec9a6d4f63982e19cbbd61dcc3b344d9","ref":"refs/heads/main","pushedAt":"2024-03-06T15:37:21.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":"Move all extension methods in Ast matchers and templates to their own file\n\nSummary: It's become a bit of a mess with all these similar methods. To start cleaning and organizing it, let's declare all extensions in the same file, and then start simplifying and avoiding extension methods where possible in future diffs\n\nReviewed By: jsendros\n\nDifferential Revision: D54553318\n\nfbshipit-source-id: 7f8c8757073b8390f7d1d46462d38a5ba631b3f7","shortMessageHtmlLink":"Move all extension methods in Ast matchers and templates to their own…"}},{"before":"60408dc222c4a2ba47cb82e33e515846da1bba32","after":"43681d092b378233b9ba3246b5d3949194a3b55f","ref":"refs/heads/main","pushedAt":"2024-02-28T23:11:01.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":"Extract PsiAstTemplate variable to its own file\n\nSummary: A step toward cleaning up the code a bit, this can be in its own file and we can gradually improve the API for with the Template class\n\nReviewed By: edelron\n\nDifferential Revision: D54321512\n\nfbshipit-source-id: 0ee12f7255b440e70a5464fa7ff38d3389781d61","shortMessageHtmlLink":"Extract PsiAstTemplate variable to its own file"}},{"before":"bb1faeacf5ba64ac504f4ceaa27b4b7b84c6f362","after":"60408dc222c4a2ba47cb82e33e515846da1bba32","ref":"refs/heads/main","pushedAt":"2024-02-28T20:56:40.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 variable for text in templates\n\nSummary:\nWe want to allow templates to support a few basic predicates on their variables.\nThe most import that comes to mind is checking the type of the expression, but we will start with a simpler option to match on a regex for the text which is also very useful.\n\nThe syntax is in the variable as in `#a{text=MyRegex}#`, this is inspired by how IntelliJ's structural replace presents similar information and I prefer to keep it consistent with other offerings.\n\nThe code coould use some refactoring and cleanups in the way we do variables.\n\nReviewed By: jsendros\n\nDifferential Revision: D54292632\n\nfbshipit-source-id: 322ddef77ec215999ae244ba5b8dce3105617d90","shortMessageHtmlLink":"Add variable for text in templates"}},{"before":"4a535365377e9595a9507d0be1158a358ba3d863","after":"bb1faeacf5ba64ac504f4ceaa27b4b7b84c6f362","ref":"refs/heads/main","pushedAt":"2024-02-28T16:21: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":"Improve template error when a variable is undeclared\n\nSummary: Adding this second line helps you figure out simple typos and mistakes better\n\nReviewed By: edelron\n\nDifferential Revision: D54308712\n\nfbshipit-source-id: de5262935d0fd68d5179a27c42a91c1e70fc8301","shortMessageHtmlLink":"Improve template error when a variable is undeclared"}},{"before":"464f67a0f6f6b8c81f842ad5199b2cb662d61214","after":"4a535365377e9595a9507d0be1158a358ba3d863","ref":"refs/heads/main","pushedAt":"2024-02-24T02:43:00.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":"Support type arguments in methods calls in Java\n\nSummary: Same as the previous diff, but applying this to Java code.\n\nReviewed By: jsendros\n\nDifferential Revision: D54118393\n\nfbshipit-source-id: 423728a6eda947ac4b716cd74ef254e1c992f4f3","shortMessageHtmlLink":"Support type arguments in methods calls in Java"}},{"before":"af082c636e6e7416a8debd4e8e6fb648384baf56","after":"464f67a0f6f6b8c81f842ad5199b2cb662d61214","ref":"refs/heads/main","pushedAt":"2024-02-23T21:39:57.000Z","pushType":"push","commitsCount":3,"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":"Support optional variables with #a?# syntax\n\nSummary:\n- A `#a?#` will be optional, see test for examples\n- To do so we parse the `?` to allow nulls in the matchers\n- We sometimes have to awkwardly inherit the null matching status so we need to support that as well\n- It's kind of undefined what it means for replacements right now\n\nReviewed By: jsendros\n\nDifferential Revision: D54131174\n\nfbshipit-source-id: 390d4dc1816b5b6eb5b82e866c97a7e8a1c5697a","shortMessageHtmlLink":"Support optional variables with #a?# syntax"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xNVQxMDoyNzoyOS4wMDAwMDBazwAAAAS2ok2x","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xNVQxMDoyNzoyOS4wMDAwMDBazwAAAAS2ok2x","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wMi0yM1QyMTozOTo1Ny4wMDAwMDBazwAAAAQDiegU"}},"title":"Activity · fbsamples/kotlin_ast_tools"}