fix(generator): handle PageStateEval with no endpoints, optimize clones
- Guard against empty modes falling through to compile_multi_mode_request by falling back to compile_simple_request_script for edge cases - Optimize ensure_modes_populated to clone only when needed - Reduces dead-code warnings from 3 to 2 🤖 Generated with [Qoder][https://qoder.com]
This commit is contained in:
@@ -405,16 +405,14 @@ fn infer_modes_from_facts(facts: &DeterministicSceneFacts) -> Vec<ModeIr> {
|
|||||||
/// If modes are already non-empty, returns a clone as-is.
|
/// If modes are already non-empty, returns a clone as-is.
|
||||||
/// If modes are empty but `api_endpoints` is non-empty, constructs a default mode from the first endpoint.
|
/// If modes are empty but `api_endpoints` is non-empty, constructs a default mode from the first endpoint.
|
||||||
fn ensure_modes_populated(scene_ir: &SceneIr) -> SceneIr {
|
fn ensure_modes_populated(scene_ir: &SceneIr) -> SceneIr {
|
||||||
|
if !scene_ir.modes.is_empty() {
|
||||||
|
return scene_ir.clone();
|
||||||
|
}
|
||||||
|
if scene_ir.api_endpoints.is_empty() {
|
||||||
|
return scene_ir.clone();
|
||||||
|
}
|
||||||
|
|
||||||
let mut adapted = scene_ir.clone();
|
let mut adapted = scene_ir.clone();
|
||||||
|
|
||||||
if !adapted.modes.is_empty() {
|
|
||||||
return adapted;
|
|
||||||
}
|
|
||||||
|
|
||||||
if adapted.api_endpoints.is_empty() {
|
|
||||||
return adapted;
|
|
||||||
}
|
|
||||||
|
|
||||||
let first_endpoint = adapted.api_endpoints[0].clone();
|
let first_endpoint = adapted.api_endpoints[0].clone();
|
||||||
let default_mode = ModeIr {
|
let default_mode = ModeIr {
|
||||||
name: "default".to_string(),
|
name: "default".to_string(),
|
||||||
@@ -780,7 +778,12 @@ fn compile_scene(scene_ir: &SceneIr, analysis: &SceneSourceAnalysis, tool_name:
|
|||||||
_ => {
|
_ => {
|
||||||
// SingleRequestTable, PageStateEval — fallback to multi-mode with auto-wrapped default mode
|
// SingleRequestTable, PageStateEval — fallback to multi-mode with auto-wrapped default mode
|
||||||
let adapted = ensure_modes_populated(scene_ir);
|
let adapted = ensure_modes_populated(scene_ir);
|
||||||
compile_multi_mode_request(&adapted)
|
if adapted.modes.is_empty() {
|
||||||
|
// PageStateEval or SingleRequestTable with no endpoints — generate a minimal skeleton
|
||||||
|
compile_simple_request_script(&adapted, "queryData")
|
||||||
|
} else {
|
||||||
|
compile_multi_mode_request(&adapted)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
let browser_test = browser_script_test(tool_name, scene_ir);
|
let browser_test = browser_script_test(tool_name, scene_ir);
|
||||||
|
|||||||
Reference in New Issue
Block a user