aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-10-30 14:31:07 +0000
committer_ov4 <ov4@ov4.org>2026-10-30 14:31:07 +0000
commit0cf54b4f77ccf8376341950b02ceb7c1d1268ed7 (patch)
treeeebbba01063451c28f0a2e1cc048215f50beb98f /include
parent4cb0d9b196008bc55dbfcdac1f9211dbbc879895 (diff)
refactor(strings): construct string values implicitly from raw literals
Keep double-quoted literals and text constants as C_STRING values. Use marked STRING constructors for text and CHAR conversion, preserving string operations and I/O through the existing class machinery. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'include')
-rw-r--r--include/cps/CodeGen.h4
1 files changed, 1 insertions, 3 deletions
diff --git a/include/cps/CodeGen.h b/include/cps/CodeGen.h
index c0ae997..4844861 100644
--- a/include/cps/CodeGen.h
+++ b/include/cps/CodeGen.h
@@ -139,17 +139,15 @@ class CodeGen {
bool requireWritable(const SymbolInfo &Info, const std::string &Name);
const SymbolInfo *lookupWritableSymbol(const std::string &Name);
void emitConstantStmt(ConstantStmtAST *Stmt);
- std::map<const ConstantStmtAST *, SymbolInfo> StringConstants;
const TypeInfo *requireStringType();
llvm::Value *emitStringFromCString(llvm::Value *Text);
- llvm::Value *emitStringFromChar(llvm::Value *Ch);
llvm::Value *emitCharFromString(ExprAST *Expr, int Line);
llvm::Value *emitStringCString(llvm::Value *Value);
llvm::Value *emitCStringExpr(ExprAST *Expr);
llvm::Value *emitFileNameOperand(ExprAST *E, const char *Keyword);
bool containsString(const TypeInfo *Type) const;
const FuncSig *findImplicitConstructor(const TypeInfo *Source, const TypeInfo *Target);
- bool canImplicitlyConvert(const TypeInfo *Source, const TypeInfo *Target);
+ int implicitConversionRank(const TypeInfo *Source, const TypeInfo *Target);
llvm::Value *emitImplicitConstruct(const FuncSig &Constructor, const TypeInfo *Target,
llvm::Value *Argument,
const std::vector<size_t> &Transfers = {});