xref: /netbsd-src/external/gpl3/gcc.old/dist/gcc/d/dmd/objc.c (revision 627f7eb200a4419d89b531d55fccd2ee3ffdcde0)
1*627f7eb2Smrg 
2*627f7eb2Smrg /* Compiler implementation of the D programming language
3*627f7eb2Smrg  * Copyright (C) 2015-2019 by The D Language Foundation, All Rights Reserved
4*627f7eb2Smrg  * written by Michel Fortin
5*627f7eb2Smrg  * http://www.digitalmars.com
6*627f7eb2Smrg  * Distributed under the Boost Software License, Version 1.0.
7*627f7eb2Smrg  * http://www.boost.org/LICENSE_1_0.txt
8*627f7eb2Smrg  * https://github.com/D-Programming-Language/dmd/blob/master/src/objc_stubs.c
9*627f7eb2Smrg  */
10*627f7eb2Smrg 
11*627f7eb2Smrg #include "objc.h"
12*627f7eb2Smrg #include "aggregate.h"
13*627f7eb2Smrg #include "scope.h"
14*627f7eb2Smrg 
15*627f7eb2Smrg class FuncDeclaration;
16*627f7eb2Smrg 
17*627f7eb2Smrg // MARK: ObjcSelector
18*627f7eb2Smrg 
ObjcSelector(const char *,size_t,size_t)19*627f7eb2Smrg ObjcSelector::ObjcSelector(const char *, size_t, size_t)
20*627f7eb2Smrg {
21*627f7eb2Smrg     printf("Should never be called when D_OBJC is false\n");
22*627f7eb2Smrg     assert(0);
23*627f7eb2Smrg }
24*627f7eb2Smrg 
lookup(const char *)25*627f7eb2Smrg ObjcSelector *ObjcSelector::lookup(const char *)
26*627f7eb2Smrg {
27*627f7eb2Smrg     printf("Should never be called when D_OBJC is false\n");
28*627f7eb2Smrg     assert(0);
29*627f7eb2Smrg     return NULL;
30*627f7eb2Smrg }
31*627f7eb2Smrg 
lookup(const char *,size_t,size_t)32*627f7eb2Smrg ObjcSelector *ObjcSelector::lookup(const char *, size_t, size_t)
33*627f7eb2Smrg {
34*627f7eb2Smrg     printf("Should never be called when D_OBJC is false\n");
35*627f7eb2Smrg     assert(0);
36*627f7eb2Smrg     return NULL;
37*627f7eb2Smrg }
38*627f7eb2Smrg 
create(FuncDeclaration *)39*627f7eb2Smrg ObjcSelector *ObjcSelector::create(FuncDeclaration *)
40*627f7eb2Smrg {
41*627f7eb2Smrg     printf("Should never be called when D_OBJC is false\n");
42*627f7eb2Smrg     assert(0);
43*627f7eb2Smrg     return NULL;
44*627f7eb2Smrg }
45*627f7eb2Smrg 
46*627f7eb2Smrg class UnsupportedObjc : public Objc
47*627f7eb2Smrg {
setObjc(ClassDeclaration * cd)48*627f7eb2Smrg     void setObjc(ClassDeclaration *cd)
49*627f7eb2Smrg     {
50*627f7eb2Smrg         cd->error("Objective-C classes not supported");
51*627f7eb2Smrg     }
52*627f7eb2Smrg 
setObjc(InterfaceDeclaration * id)53*627f7eb2Smrg     void setObjc(InterfaceDeclaration *id)
54*627f7eb2Smrg     {
55*627f7eb2Smrg         id->error("Objective-C interfaces not supported");
56*627f7eb2Smrg     }
57*627f7eb2Smrg 
setSelector(FuncDeclaration *,Scope *)58*627f7eb2Smrg     void setSelector(FuncDeclaration *, Scope *)
59*627f7eb2Smrg     {
60*627f7eb2Smrg         // noop
61*627f7eb2Smrg     }
62*627f7eb2Smrg 
validateSelector(FuncDeclaration *)63*627f7eb2Smrg     void validateSelector(FuncDeclaration *)
64*627f7eb2Smrg     {
65*627f7eb2Smrg         // noop
66*627f7eb2Smrg     }
67*627f7eb2Smrg 
checkLinkage(FuncDeclaration *)68*627f7eb2Smrg     void checkLinkage(FuncDeclaration *)
69*627f7eb2Smrg     {
70*627f7eb2Smrg         // noop
71*627f7eb2Smrg     }
72*627f7eb2Smrg };
73*627f7eb2Smrg 
74*627f7eb2Smrg static Objc *_objc;
75*627f7eb2Smrg 
objc()76*627f7eb2Smrg Objc *objc()
77*627f7eb2Smrg {
78*627f7eb2Smrg     return _objc;
79*627f7eb2Smrg }
80*627f7eb2Smrg 
_init()81*627f7eb2Smrg void Objc::_init()
82*627f7eb2Smrg {
83*627f7eb2Smrg     _objc = new UnsupportedObjc();
84*627f7eb2Smrg }
85