@@ -38,7 +38,6 @@ class StaticFunctionVisitor : public RecursiveASTVisitor<StaticFunctionVisitor>
38
38
// Handle string literals
39
39
if (const StringLiteral *SL = dyn_cast<StringLiteral>(string_expr)) {
40
40
llvm::StringRef Str = SL->getString ();
41
- llvm::errs () << " Evaluated string literal: " << Str << " \n " ;
42
41
// Convert the string to std::basic_string<uint8_t>
43
42
return std::basic_string<uint8_t >(Str.bytes_begin (), Str.bytes_end ());
44
43
}
@@ -59,6 +58,8 @@ class StaticFunctionVisitor : public RecursiveASTVisitor<StaticFunctionVisitor>
59
58
Result.push_back (static_cast <uint8_t >(num));
60
59
} else if (const auto *CharLit = dyn_cast<CharacterLiteral>(E)) {
61
60
Result.push_back (static_cast <uint8_t >(CharLit->getValue ()));
61
+ } else if (const auto *ListExpr = dyn_cast<InitListExpr>(E)) {
62
+ return GetString (E);
62
63
} else {
63
64
llvm::errs () << " Unsupported array element type " << E->getStmtClassName ();
64
65
return {};
@@ -113,6 +114,7 @@ class StaticFunctionVisitor : public RecursiveASTVisitor<StaticFunctionVisitor>
113
114
auto fname = EvaluateString (fnameExpr);
114
115
if (fname.empty ()) {
115
116
llvm::errs () << " Filename is not valid or could not be resolved.\n " ;
117
+ return ;
116
118
}
117
119
const char * fname_c_str = reinterpret_cast <const char *>(fname.data ());
118
120
llvm::errs () << " Filename evaluated: " << fname_c_str << " \n " ;
@@ -174,4 +176,4 @@ class StaticWriteAction : public PluginASTAction {
174
176
175
177
// Register the plugin with Clang
176
178
static FrontendPluginRegistry::Add<StaticWriteAction>
177
- X (" static-write " , " Evaluates constexpr byte array in static_write and writes to a file at compile time" );
179
+ X (" staticio " , " Evaluates constexpr byte array and writes/reads a file at compile time" );
0 commit comments