diff options
| author | Yong He <yonghe@outlook.com> | 2022-09-15 14:22:59 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-15 14:22:59 -0700 |
| commit | a6032446c6bf7f64d1e201bf438a4c7605a3dbb4 (patch) | |
| tree | a95267c52155e13699ff9aab38ab68353d76939e /source/slang/slang-parser.cpp | |
| parent | 05f9aaf6a4ef246dcf89b00000a8e59e90c47662 (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.cpp | 21 |
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 { |
