brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1022 B · 4f23cb8 Raw
43 lines · c
1// RUN: %clang_cc1 %s -verify -fsyntax-only -fblocks2// expected-no-diagnostics3 4#include <stdarg.h>5 6int main(int argc, char *argv[]) {7    8    long (^addthem)(const char *, ...) = ^long (const char *format, ...){9        va_list argp;10        const char *p;11        int i;12        char c;13        double d;14        long result = 0;15        va_start(argp, format);16        for (p = format; *p; p++) switch (*p) {17            case 'i':18                i = va_arg(argp, int);19                result += i;20                break;21            case 'd':22                d = va_arg(argp, double);23                result += (int)d;24                break;25            case 'c':26                c = va_arg(argp, int);27                result += c;28                break;29        }30        return result;31    };32    long testresult = addthem("ii", 10, 20);33    if (testresult != 30) {34        return 1;35    }36    testresult = addthem("idc", 30, 40.0, 'a');37    if (testresult != (70+'a')) {38        return 1;39    }40    return 0;41}42 43