summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-parser.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2022-09-15 14:22:59 -0700
committerGitHub <noreply@github.com>2022-09-15 14:22:59 -0700
commita6032446c6bf7f64d1e201bf438a4c7605a3dbb4 (patch)
treea95267c52155e13699ff9aab38ab68353d76939e /source/slang/slang-parser.cpp
parent05f9aaf6a4ef246dcf89b00000a8e59e90c47662 (diff)
Language feature: pointer sized int types. (#2401)
* Language feature: pointer sized int types. * Fix. * small change to test. * Fix stdlib. * Fix. * Fix. * Add typedef for `size_t` in stdlib. * Fix test. * Add `intptr_t::size` constant. Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-parser.cpp')
-rw-r--r--source/slang/slang-parser.cpp21
1 files changed, 17 insertions, 4 deletions
diff --git a/source/slang/slang-parser.cpp b/source/slang/slang-parser.cpp
index 77a2319d2..55b6afd6a 100644
--- a/source/slang/slang-parser.cpp
+++ b/source/slang/slang-parser.cpp
@@ -5502,6 +5502,7 @@ namespace Slang
int lCount = 0;
int uCount = 0;
+ int zCount = 0;
int unknownCount = 0;
while(suffixCursor < suffixEnd)
{
@@ -5515,6 +5516,10 @@ namespace Slang
uCount++;
break;
+ case 'z': case 'Z':
+ zCount++;
+ break;
+
default:
unknownCount++;
break;
@@ -5527,25 +5532,33 @@ namespace Slang
suffixBaseType = BaseType::Void;
}
// `u` or `ul` suffix -> `uint`
- else if(uCount == 1 && (lCount <= 1))
+ else if(uCount == 1 && (lCount <= 1) && zCount == 0)
{
suffixBaseType = BaseType::UInt;
}
// `l` suffix on integer -> `int` (== `long`)
- else if(lCount == 1 && !uCount)
+ else if(lCount == 1 && !uCount && zCount == 0)
{
suffixBaseType = BaseType::Int;
}
// `ull` suffix -> `uint64_t`
- else if(uCount == 1 && lCount == 2)
+ else if(uCount == 1 && lCount == 2 && zCount == 0)
{
suffixBaseType = BaseType::UInt64;
}
// `ll` suffix -> `int64_t`
- else if(uCount == 0 && lCount == 2)
+ else if(uCount == 0 && lCount == 2 && zCount == 0)
{
suffixBaseType = BaseType::Int64;
}
+ else if (uCount == 0 && zCount == 1)
+ {
+ suffixBaseType = BaseType::IntPtr;
+ }
+ else if (uCount == 1 && zCount == 1)
+ {
+ suffixBaseType = BaseType::UIntPtr;
+ }
// TODO: do we need suffixes for smaller integer types?
else
{