xref: /llvm-project/compiler-rt/test/BlocksRuntime/constassign.c (revision 2946cd701067404b99c39fb29dc9c74bd7193eb3)
18c1441f8SAlexey Samsonov //
2*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
3*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
4*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
58c1441f8SAlexey Samsonov 
68c1441f8SAlexey Samsonov //
78c1441f8SAlexey Samsonov //  constassign.c
88c1441f8SAlexey Samsonov //  bocktest
98c1441f8SAlexey Samsonov //
108c1441f8SAlexey Samsonov //  Created by Blaine Garst on 3/21/08.
118c1441f8SAlexey Samsonov //
128c1441f8SAlexey Samsonov // shouldn't be able to assign to a const pointer
138c1441f8SAlexey Samsonov // CONFIG error: assignment of read-only
148c1441f8SAlexey Samsonov 
158c1441f8SAlexey Samsonov #import <stdio.h>
168c1441f8SAlexey Samsonov 
foo(void)178c1441f8SAlexey Samsonov void foo(void) { printf("I'm in foo\n"); }
bar(void)188c1441f8SAlexey Samsonov void bar(void) { printf("I'm in bar\n"); }
198c1441f8SAlexey Samsonov 
main(int argc,char * argv[])208c1441f8SAlexey Samsonov int main(int argc, char *argv[]) {
218c1441f8SAlexey Samsonov     void (*const fptr)(void) = foo;
228c1441f8SAlexey Samsonov     void (^const  blockA)(void) = ^ { printf("hello\n"); };
238c1441f8SAlexey Samsonov     blockA = ^ { printf("world\n"); } ;
248c1441f8SAlexey Samsonov     fptr = bar;
258c1441f8SAlexey Samsonov     printf("%s: success\n", argv[0]);
268c1441f8SAlexey Samsonov     return 0;
278c1441f8SAlexey Samsonov }
28