blob: 0f1e55ff0fc806d968448dba8349f894663a3cc5 [file] [log] [blame]
/*
TEST_OUTPUT:
---
Hello
World
from
CTFE
Hello[1 .. 3] = el
S.str
abcdefghij[2 .. 6] = cdef
---
*/
struct S
{
string str = "S.str";
alias str this;
}
int greeting(scope const char[][] values) pure nothrow @safe @nogc
{
const string newline = "\n";
foreach (const val; values)
{
__ctfeWrite(val);
__ctfeWrite(newline);
}
// Test slices
const val = values[0];
__ctfeWrite(val[]);
__ctfeWrite(['[','1',' ','.','.',' ','3',']',' ','=',' ']);
__ctfeWrite(val[1 .. 3]);
__ctfeWrite(newline);
S s;
__ctfeWrite(s);
__ctfeWrite(newline);
// Test mutable slices
char[10] buffer;
fill(buffer); // Avoid potential shortcuts for literals
__ctfeWrite(buffer[0 .. $]);
__ctfeWrite("[2 .. 6] = ");
__ctfeWrite(buffer[2 .. 6]);
__ctfeWrite(newline);
return 0;
}
void fill(ref char[10] buffer) pure nothrow @safe @nogc
{
foreach (const idx, ref ch; buffer)
ch = cast(char)('a' + idx);
}
enum forceCTFE = greeting(["Hello", "World", "from", "CTFE"]);