From 3ca27faa23a92124f26875a6f00bcfc3a1c6431e Mon Sep 17 00:00:00 2001 From: ArielG-NV <159081215+ArielG-NV@users.noreply.github.com> Date: Fri, 30 May 2025 14:54:31 -0700 Subject: Ensure we do not have an `initExpr` on a `VarDecl` inside an `InterfaceDecl` (#7283) * Ensure we do not have an initExpr on a var inside an InterfaceDecl Ensure we do not have an initExpr on a var inside an InterfaceDecl. If we do, send an error. Ensure the language server does not segfault with this error as per the issue. * format code * split tests --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> --- source/slang/slang-check-decl.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'source') diff --git a/source/slang/slang-check-decl.cpp b/source/slang/slang-check-decl.cpp index 71aa71e69..cc65edd2f 100644 --- a/source/slang/slang-check-decl.cpp +++ b/source/slang/slang-check-decl.cpp @@ -2464,6 +2464,17 @@ bool DiagnoseIsAllowedInitExpr(VarDeclBase* varDecl, DiagnosticSink* sink) return false; } + if (as(varDecl->parentDecl)) + { + if (sink && varDecl->initExpr) + sink->diagnose( + varDecl, + Diagnostics::cannotHaveInitializer, + varDecl, + "an interface requirement"); + return false; + } + return true; } -- cgit v1.2.3