diff options
author | arphaman <arphaman@gmail.com> | 2013-09-15 12:55:42 +0100 |
---|---|---|
committer | arphaman <arphaman@gmail.com> | 2013-09-15 12:55:42 +0100 |
commit | 1192439fb8af94934f4b98bc55fdf25b17786527 (patch) | |
tree | 90e999d908d8cb490a3a2caa30d269eadf6c5c8a | |
parent | 2cf3fb6ca004470326987a6392555082945d0b36 (diff) | |
download | flang-1192439fb8af94934f4b98bc55fdf25b17786527.tar.gz |
perform init typechecking instead of assignment typechecking for PARAMETER constants
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 8 | ||||
-rw-r--r-- | test/Sema/parameter.f95 | 2 |
2 files changed, 5 insertions, 5 deletions
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index bf7ffda47d..3cbb5c9fff 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -258,10 +258,10 @@ Decl *Sema::ActOnParameterEntityDecl(ASTContext &C, QualType T, } if(VD) { - Value = TypecheckAssignment(VD->getType(), Value, - EqualLoc, - getTokenRange(IDLoc), - Value.get()->getSourceRange()); + Value = CheckAndApplyAssignmentConstraints(EqualLoc, + VD->getType(), Value.get(), + Sema::AssignmentAction::Initializing); + if(Value.isInvalid()) return nullptr; // FIXME: if value is invalid, mutate into parameter givin a zero value VD->MutateIntoParameter(Value.get()); diff --git a/test/Sema/parameter.f95 b/test/Sema/parameter.f95 index 6f3d8d6317..d4012c8ffa 100644 --- a/test/Sema/parameter.f95 +++ b/test/Sema/parameter.f95 @@ -7,7 +7,7 @@ PROGRAM paramtest PARAMETER (comp = 0) INTEGER NUMBER - PARAMETER (NUMBER = .false.) ! expected-error {{assigning to 'integer' from incompatible type 'logical'}} + PARAMETER (NUMBER = .false.) ! expected-error {{initializing 'integer' with an expression of incompatible type 'logical'}} REAL w ! expected-error {{redefinition of 'w'}} |