summaryrefslogtreecommitdiff
path: root/src/parser/contexts.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser/contexts.h')
-rw-r--r--src/parser/contexts.h36
1 files changed, 30 insertions, 6 deletions
diff --git a/src/parser/contexts.h b/src/parser/contexts.h
index 6505d11a4..4c15c0308 100644
--- a/src/parser/contexts.h
+++ b/src/parser/contexts.h
@@ -2448,9 +2448,21 @@ struct ParseDefsCtx : TypeParserCtx<ParseDefsCtx> {
StringNewOp op,
bool try_,
Name* mem) {
- auto m = getMemory(pos, mem);
- CHECK_ERR(m);
- return withLoc(pos, irBuilder.makeStringNew(op, try_, *m));
+ Name memName;
+ switch (op) {
+ case StringNewUTF8:
+ case StringNewWTF8:
+ case StringNewLossyUTF8:
+ case StringNewWTF16: {
+ auto m = getMemory(pos, mem);
+ CHECK_ERR(m);
+ memName = *m;
+ break;
+ }
+ default:
+ break;
+ }
+ return withLoc(pos, irBuilder.makeStringNew(op, try_, memName));
}
Result<> makeStringConst(Index pos,
@@ -2469,9 +2481,21 @@ struct ParseDefsCtx : TypeParserCtx<ParseDefsCtx> {
const std::vector<Annotation>& annotations,
StringEncodeOp op,
Name* mem) {
- auto m = getMemory(pos, mem);
- CHECK_ERR(m);
- return withLoc(pos, irBuilder.makeStringEncode(op, *m));
+ Name memName;
+ switch (op) {
+ case StringEncodeUTF8:
+ case StringEncodeLossyUTF8:
+ case StringEncodeWTF8:
+ case StringEncodeWTF16: {
+ auto m = getMemory(pos, mem);
+ CHECK_ERR(m);
+ memName = *m;
+ break;
+ }
+ default:
+ break;
+ }
+ return withLoc(pos, irBuilder.makeStringEncode(op, memName));
}
Result<> makeStringConcat(Index pos,