diff options
| author | Yong He <yonghe@outlook.com> | 2022-08-17 23:08:34 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-17 23:08:34 -0700 |
| commit | adaea0e993fd8db351b5dad92802e47ed6d0ec77 (patch) | |
| tree | dfad5201677b0202b0b890cbae066b5b2f3f033b /source/slang/slang-check-impl.h | |
| parent | d65c6183c0d8b365aa182c3d9026ba85522531f2 (diff) | |
Warning on lossy implicit casts. (#2367)
* Warning on bool to float conversion.
* Fix test cases.
* Improve.
* LanguageServer: don't show constant value for non constant variables.
* Fix tests.
* Fix warnings in tests.
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-check-impl.h')
| -rw-r--r-- | source/slang/slang-check-impl.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/source/slang/slang-check-impl.h b/source/slang/slang-check-impl.h index 345652263..9a849384c 100644 --- a/source/slang/slang-check-impl.h +++ b/source/slang/slang-check-impl.h @@ -562,8 +562,8 @@ namespace Slang Type* ExtractGenericArgType(Expr* exp); - IntVal* ExtractGenericArgInteger(Expr* exp, DiagnosticSink* sink); - IntVal* ExtractGenericArgInteger(Expr* exp); + IntVal* ExtractGenericArgInteger(Expr* exp, Type* genericParamType, DiagnosticSink* sink); + IntVal* ExtractGenericArgInteger(Expr* exp, Type* genericParamType); Val* ExtractGenericArgVal(Expr* exp); @@ -1035,6 +1035,8 @@ namespace Slang /// Is `type` a scalar integer type. bool isScalarIntegerType(Type* type); + bool isIntValueInRangeOfType(IntegerLiteralValue value, Type* type); + // Validate that `type` is a suitable type to use // as the tag type for an `enum` void validateEnumTagType(Type* type, SourceLoc const& loc); @@ -1135,8 +1137,13 @@ namespace Slang ConstantFoldingCircularityInfo* circularityInfo); // Enforce that an expression resolves to an integer constant, and get its value - IntVal* CheckIntegerConstantExpression(Expr* inExpr); - IntVal* CheckIntegerConstantExpression(Expr* inExpr, DiagnosticSink* sink); + enum class IntegerConstantExpressionCoercionType + { + SpecificType, + AnyInteger + }; + IntVal* CheckIntegerConstantExpression(Expr* inExpr, IntegerConstantExpressionCoercionType coercionType, Type* expectedType); + IntVal* CheckIntegerConstantExpression(Expr* inExpr, IntegerConstantExpressionCoercionType coercionType, Type* expectedType, DiagnosticSink* sink); IntVal* CheckEnumConstantExpression(Expr* expr); |
