Problem
The Objective-C parser does not extract class names from Objective-C messages, reducing metadata quality for error tracking.
Context
- Referenced in commit 6917f98: "Find the Obj-C messages; todo: class name"
- Objective-C uses bracket syntax for messages:
[ClassName methodName:arg]
- Class name is valuable metadata for error tracking and categorization
File Location
src/main/java/io/err0/client/languages/ObjectiveCCPPSourceCodeParse.java
Current Behavior
- Parser recognizes Objective-C messages
- Parser extracts method names
- Parser does NOT extract class names
Expected Behavior
Parser should extract class names from:
[MyClass myMethod]; // Class: MyClass
[self someMethod]; // Class: self (or containing class)
[[MyClass alloc] init]; // Class: MyClass
[NSLog(@"message")]; // Class: NSLog (function, not class)
Implementation Guidance
- Look for patterns:
[ClassName methodName
- Handle nested brackets:
[[Class1 method1] method2]
- Handle
self and super keywords
- Extract class name token and store in metadata
- Follow existing patterns from Java/Kotlin parsers for class name extraction
Test Cases Needed
Add tests in src/test/java/io/err0/client/test/Test0055ObjC.java:
- Simple message send with class name
- Nested message sends
self and super keywords
- Mixed Objective-C and C code
Reference Files
src/main/java/io/err0/client/languages/JavaSourceCodeParse.java (for class name extraction pattern)
src/test/testdata/test0055/ (Objective-C test data)
Acceptance Criteria
Problem
The Objective-C parser does not extract class names from Objective-C messages, reducing metadata quality for error tracking.
Context
[ClassName methodName:arg]File Location
src/main/java/io/err0/client/languages/ObjectiveCCPPSourceCodeParse.javaCurrent Behavior
Expected Behavior
Parser should extract class names from:
Implementation Guidance
[ClassName methodName[[Class1 method1] method2]selfandsuperkeywordsTest Cases Needed
Add tests in
src/test/java/io/err0/client/test/Test0055ObjC.java:selfandsuperkeywordsReference Files
src/main/java/io/err0/client/languages/JavaSourceCodeParse.java(for class name extraction pattern)src/test/testdata/test0055/(Objective-C test data)Acceptance Criteria