aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-04-25 08:47:54 +0000
committerChris Lattner <sabre@nondot.org>2009-04-25 08:47:54 +0000
commit5153ee66d6d4fb37b02f85df38e48dc8b46660df (patch)
tree09fbc6dd5a9a2953119ac1935394f0aa08453342 /lib/Sema/SemaDecl.cpp
parent6e4750188e836e119f8605cbd34023d0a3b18011 (diff)
Change SemaType's "GetTypeForDeclarator" and "ConvertDeclSpecToType" to
always return a non-null QualType + error bit. This fixes a bunch of cases that didn't check for null result (and could thus crash) and eliminates some crappy code scattered throughout sema. This also improves the diagnostics in the recursive struct case to eliminate a bogus second error. It also cleans up the case added to function.c by forming a proper function type even though the declarator is erroneous, allowing the parameter to be added to the function. Before: t.c:2:1: error: unknown type name 'unknown_type' unknown_type f(void*P) ^ t.c:4:3: error: use of undeclared identifier 'P' P+1; ^ After: t.c:2:1: error: unknown type name 'unknown_type' unknown_type f(void*P) ^ git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70023 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaDecl.cpp')
-rw-r--r--lib/Sema/SemaDecl.cpp15
1 files changed, 0 insertions, 15 deletions
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp
index fd6cf525b9..914e304557 100644
--- a/lib/Sema/SemaDecl.cpp
+++ b/lib/Sema/SemaDecl.cpp
@@ -1361,13 +1361,6 @@ Sema::ActOnDeclarator(Scope *S, Declarator &D, bool IsFunctionDefinition) {
NamedDecl *New;
QualType R = GetTypeForDeclarator(D, S);
- if (R.isNull()) {
- D.setInvalidType();
- R = Context.IntTy;
- if (IsFunctionDefinition) // int(...)
- R = Context.getFunctionType(R, 0, 0, true, 0);
-
- }
// See if this is a redefinition of a variable in the same scope.
if (D.getCXXScopeSpec().isInvalid()) {
@@ -2798,10 +2791,6 @@ Sema::ActOnParamDeclarator(Scope *S, Declarator &D) {
CheckExtraCXXDefaultArguments(D);
QualType parmDeclType = GetTypeForDeclarator(D, S);
- if (parmDeclType.isNull()) {
- D.setInvalidType(true);
- parmDeclType = Context.IntTy;
- }
// TODO: CHECK FOR CONFLICTS, multiple decls with same name in one scope.
// Can this happen for params? We already checked that they don't conflict
@@ -3816,10 +3805,6 @@ Sema::DeclPtrTy Sema::ActOnIvar(Scope *S,
// example, unnamed unions inject all members into the struct namespace!
QualType T = GetTypeForDeclarator(D, S);
- if (T.isNull()) {
- D.setInvalidType();
- T = Context.IntTy;
- }
if (BitWidth) {
// 6.7.2.1p3, 6.7.2.1p4