{"record":{"id":"a4613b300ad0a96b","repo":"rust-lang/rust","slug":"non-rigid-unevaluated-constant-for-compute-const-a","errorCode":null,"errorMessage":"non-rigid unevaluated constant for compute_const_arg_has_type_goal: {ct:?}","messagePattern":"non-rigid unevaluated constant for compute_const_arg_has_type_goal: (.+?)","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"compiler/rustc_next_trait_solver/src/solve/mod.rs","lineNumber":266,"sourceCode":"    ) -> QueryResultOrRerunNonErased<I> {\n        let (ct, ty) = goal.predicate;\n        let ct = self.structurally_normalize_const(goal.param_env, ct)?;\n\n        let ct_ty = match ct.kind() {\n            ty::ConstKind::Infer(_) => {\n                return self\n                    .evaluate_added_goals_and_make_canonical_response(Certainty::AMBIGUOUS)\n                    .map_err(Into::into);\n            }\n            ty::ConstKind::Error(_) => {\n                return self\n                    .evaluate_added_goals_and_make_canonical_response(Certainty::Yes)\n                    .map_err(Into::into);\n            }\n            ty::ConstKind::Alias(ty::IsRigid::Yes, alias_const) => {\n                alias_const.type_of(self.cx()).skip_norm_wip()\n            }\n            ty::ConstKind::Alias(ty::IsRigid::No, _) => unimplemented!(\n                \"non-rigid unevaluated constant for compute_const_arg_has_type_goal: {ct:?}\"\n            ),\n            ty::ConstKind::Expr(_) => unimplemented!(\n                \"`feature(generic_const_exprs)` is not supported in the new trait solver\"\n            ),\n            ty::ConstKind::Param(_) => {\n                unreachable!(\"`ConstKind::Param` should have been canonicalized to `Placeholder`\")\n            }\n            ty::ConstKind::Bound(_, _) => panic!(\"escaping bound vars in {:?}\", ct),\n            ty::ConstKind::Value(cv) => cv.ty(),\n            ty::ConstKind::Placeholder(placeholder) => {\n                placeholder.find_const_ty_from_env(goal.param_env)\n            }\n        };\n\n        self.eq(goal.param_env, ct_ty, ty)?;\n        self.evaluate_added_goals_and_make_canonical_response(Certainty::Yes).map_err(Into::into)\n    }","sourceCodeStart":248,"sourceCodeEnd":284,"githubUrl":"https://github.com/rust-lang/rust/blob/7088e4b63a9516ebfbfe2ab2d999cf01a528ac14/compiler/rustc_next_trait_solver/src/solve/mod.rs#L248-L284","documentation":"An `unimplemented!(\"non-rigid unevaluated constant for compute_const_arg_has_type_goal: {ct:?}\")` ICE in the next trait solver. When the solver checks that a const argument has a given type, it handles rigid (fully normalized) alias constants but not non-rigid unevaluated alias constants — those require normalization the new solver cannot yet perform here, so it panics at mod.rs:266.","triggerScenarios":"Enabling `-Znext-solver` with code whose const arguments contain non-rigid unevaluated alias constants — e.g. generic const generics that have not been normalized/evaluated, often seen with `generic_const_exprs`-style or associated-const code.","commonSituations":"Nightly + `-Znext-solver` + const generics that rely on associated consts or unevaluated generic const expressions passed as type/array parameters.","solutions":["Do not enable `-Znext-solver` for crates using complex unevaluated const generics.","Evaluate the const at the call site (use a concrete const value, not an alias, so it is rigid).","Track upstream next-solver work on non-rigid const normalization."],"exampleFix":"// before (next solver + non-rigid alias const -> ICE)\nconst N: usize = some_assoc_const::<T>();\nlet a: [u8; N];\n\n// after — concrete const, rigid, or drop -Znext-solver\nconst N: usize = 16;\nlet a: [u8; N];","handlingStrategy":"fallback","validationCode":"# Detect next-solver + unevaluated alias const generics\nif [[ \"${RUSTFLAGS:-}\" == *next-solver* ]]; then\n  rg -nE 'const [A-Z_0-9]+: .* =' src/ | rg -v '\\b(digit|literal|concrete)\\b'\n  echo \"avoid: non-rigid alias const args unsupported by next-solver\"\nfi","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Avoid non-rigid alias constants as const-generic arguments under `-Znext-solver`.","Substitute concrete (evaluated) const values at call sites.","Track next-solver const-normalization work."],"tags":["rustc","next-solver","const-generics","const-normalization","nightly","ice","compiler-internal","unfinished-feature"],"backgroundTag":null,"analyzedSha":"7088e4b63a9516ebfbfe2ab2d999cf01a528ac14","analyzedAt":"2026-08-10T14:17:03.603Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}