From fb5484990330377b3b919d8cd7afe0d60022e9e1 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Wed, 4 Feb 2009 08:01:01 +0000 Subject: [PATCH] ccc: -ObjC and -ObjC++ change default language, but only for "source files". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63727 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/ccc/ccclib/Driver.py | 13 +++++++++++++ tools/ccc/test/ccc/ObjC.c | 7 +++++++ 2 files changed, 20 insertions(+) create mode 100644 tools/ccc/test/ccc/ObjC.c diff --git a/tools/ccc/ccclib/Driver.py b/tools/ccc/ccclib/Driver.py index 2f4cc14066..30e2ae702d 100644 --- a/tools/ccc/ccclib/Driver.py +++ b/tools/ccc/ccclib/Driver.py @@ -376,6 +376,19 @@ class Driver(object): base,ext = os.path.splitext(inputValue) if ext and ext in Types.kTypeSuffixMap: klass = Types.kTypeSuffixMap[ext] + + # -ObjC and -ObjC++ over-ride the default + # language, but only for "source files". We + # just treat everything that isn't a linker + # input as a source file. + # + # FIXME: Clean this up if we move the phase + # sequence into the type. + if klass is not Types.ObjectType: + if args.getLastArg(self.parser.ObjCOption): + klass = Types.ObjCType + elif args.getLastArg(self.parser.ObjCXXOption): + klass = Types.ObjCType else: # FIXME: Its not clear why we shouldn't just # revert to unknown. I think this is more likely a diff --git a/tools/ccc/test/ccc/ObjC.c b/tools/ccc/test/ccc/ObjC.c new file mode 100644 index 0000000000..e638cbbc4e --- /dev/null +++ b/tools/ccc/test/ccc/ObjC.c @@ -0,0 +1,7 @@ +// RUN: xcc -fsyntax-only %s -ObjC && +// RUN: ! xcc -fsyntax-only -x c %s -ObjC && +// RUN: xcc -fsyntax-only %s -ObjC++ && +// RUN: ! xcc -fsyntax-only -x c %s -ObjC++ + +@interface A +@end