diff options
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang/slang-ast-print.cpp | 14 | ||||
| -rw-r--r-- | source/slang/slang-check-decl.cpp | 6 | ||||
| -rw-r--r-- | source/slang/slang-language-server.cpp | 16 |
3 files changed, 33 insertions, 3 deletions
diff --git a/source/slang/slang-ast-print.cpp b/source/slang/slang-ast-print.cpp index b80afeee1..d3e028901 100644 --- a/source/slang/slang-ast-print.cpp +++ b/source/slang/slang-ast-print.cpp @@ -365,6 +365,20 @@ void ASTPrinter::addDeclKindPrefix(Decl* decl) continue; if (as<AttributeTargetModifier>(modifier)) continue; + if (as<RequiredCUDASMVersionModifier>(modifier)) + continue; + if (as<RequiredSPIRVVersionModifier>(modifier)) + continue; + if (as<RequiredGLSLVersionModifier>(modifier)) + continue; + if (as<RequiredGLSLExtensionModifier>(modifier)) + continue; + if (as<GLSLLayoutModifier>(modifier)) + continue; + if (as<GLSLLayoutModifierGroupMarker>(modifier)) + continue; + if (as<HLSLLayoutSemantic>(modifier)) + continue; } // Don't print out attributes. if (as<AttributeBase>(modifier)) diff --git a/source/slang/slang-check-decl.cpp b/source/slang/slang-check-decl.cpp index c31c94a85..7c36bdd5f 100644 --- a/source/slang/slang-check-decl.cpp +++ b/source/slang/slang-check-decl.cpp @@ -7346,6 +7346,10 @@ namespace Slang visitor->getSink()->diagnose(attr, Diagnostics::cannotUseInterfaceRequirementAsDerivative); return; } + if (funcType->getParamCount() != imaginaryArguments.getCount()) + { + goto error; + } for (Index ii = 0; ii < imaginaryArguments.getCount(); ++ii) { // Check if the resolved invoke argument type is an error type. @@ -7403,7 +7407,7 @@ namespace Slang return; } } - + error:; // Build the expected signature from imaginary args to diagnose // when no matching function is found (this excludes the case handled above) // diff --git a/source/slang/slang-language-server.cpp b/source/slang/slang-language-server.cpp index 24ab534ab..c188142f5 100644 --- a/source/slang/slang-language-server.cpp +++ b/source/slang/slang-language-server.cpp @@ -1255,8 +1255,20 @@ SlangResult LanguageServer::signatureHelp( return SLANG_OK; } - auto funcExpr = - appExpr->originalFunctionExpr ? appExpr->originalFunctionExpr : appExpr->functionExpr; + auto funcExpr = appExpr->functionExpr; + if (appExpr->originalFunctionExpr) + { + bool useOriginalExpr = true; + if (auto originalDeclRefExpr = as<DeclRefExpr>(appExpr->originalFunctionExpr)) + { + if (!originalDeclRefExpr->declRef) + { + useOriginalExpr = false; + } + } + if (useOriginalExpr) + funcExpr = appExpr->originalFunctionExpr; + } if (!funcExpr) { m_connection->sendResult(NullResponse::get(), responseId); |
