VikingDeng opened a new issue, #3517:
URL: https://github.com/apache/fory/issues/3517

   ### Search before asking
   
   - [x] I had searched in the [issues](https://github.com/apache/fory/issues) 
and found no similar issues.
   
   
   ### Version
   
   ## Problem
   
   FDL already supports qualified type names such as `Outer.Inner` in the 
normal type system, and schema validation can resolve them correctly.
   
   But in service RPC signatures, the FDL parser currently only accepts a 
simple identifier for request and response types.
   
   For example, this fails today:
   
   ```fdl
   package demo;
   
   message Outer {
       message HelloRequest {}
   }
   
   message ReplyEnvelope {
       message HelloReply {}
   }
   
   service Greeter {
       rpc SayHello (Outer.HelloRequest) returns (ReplyEnvelope.HelloReply);
   }
   ```
   
   The parser stops at the `.` in `Outer.HelloRequest`.
   
   ## Why this looks like a bug
   
   - FDL field/type parsing already accepts qualified names
   - protobuf service parsing already accepts qualified RPC type names
   - FlatBuffers service parsing already accepts qualified RPC type names
   - the existing validator can already resolve qualified nested names
   
   So this looks like a small inconsistency in the FDL service parser rather 
than an intentional limitation.
   
   ## Proposed fix
   
   Allow FDL RPC request/response type positions to parse a named type 
reference such as:
   
   - `Request`
   - `Outer.Inner`
   - `Outer.Middle.Inner`
   
   This should be limited to parser behavior and regression coverage. No 
service IR or validator redesign is needed.
   
   
   ### Component(s)
   
   Other
   
   ### Minimal reproduce step
   
   Put this schema in `repro.fdl`:
   ```bash
   package demo;
   
   message Outer {
       message HelloRequest {}
   }
   
   message ReplyEnvelope {
       message HelloReply {}
   }
   
   service Greeter {
       rpc SayHello (Outer.HelloRequest) returns (ReplyEnvelope.HelloReply);
   }
   ```
   2. Parse it with the FDL parser.
   3. Parsing fails at the qualified request type `Outer.HelloRequest`.
   
   ### What did you expect to see?
   
   I expected the schema to parse successfully, because qualified nested type 
names like `Outer.Inner` are already supported in the normal FDL type system, 
and service RPC signatures should be able to reference those same named types.
   
   ### What did you see instead?
   
   The parser rejected the RPC signature and stopped at the qualified type 
name, with an error like:
   
   `Expected ')' after request type`
   
   So FDL service RPC request/response type positions currently only accept a 
simple identifier, not a qualified nested type name.
   
   ### Anything Else?
   
   _No response_
   
   ### Are you willing to submit a PR?
   
   - [x] I'm willing to submit a PR!


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to