Skip to content

Commit 4c9490c

Browse files
gabrieldonadelreact-native-bot
authored andcommitted
generate-artifacts-executor: fix parsing .class in complex classes (#51813)
Summary: There is an edge case in the codegen `findRCTComponentViewProtocolClass` function where the parsing of the Component Class will fail if there is another `.class` call in the same file after the `Class<RCTComponentViewProtocol>` function. This ends up resulting in a `RCTThirdPartyComponentsProvider.mm` file that looks like the image bellow <img width="1052" alt="image" src="https://github.com/user-attachments/assets/26ce93be-0370-4852-a949-9da21762ff7f" /> You can reproduce this with the following ``` Class<RCTComponentViewProtocol> XYZCls(void) { return XYZ.class; } // this comment breaks codegen .class ``` ## Changelog: [IOS] [FIXED] - Fix codegen extracting `.class` from complex component classes Pull Request resolved: #51813 Test Plan: Run codegen locally, use this patch in the expo/expo repo and CI should be green Reviewed By: cipolleschi Differential Revision: D75964424 Pulled By: cortinico fbshipit-source-id: 50e45aa2ac6e43c75ee6fdd76791c591d81d4df7
1 parent 0a9ea39 commit 4c9490c

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

packages/react-native/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ function findRCTComponentViewProtocolClass(filepath) {
186186
const lines = fileContent.split('\n');
187187
const signatureIndex = lines.findIndex(line => regex.test(line));
188188
const returnRegex = /return (.*)\.class/;
189-
const classNameMatch = String(lines.slice(signatureIndex)).match(
189+
const classNameMatch = String(lines.slice(signatureIndex).join('\n')).match(
190190
returnRegex,
191191
);
192192
if (classNameMatch) {

0 commit comments

Comments
 (0)