summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarphaman <arphaman@gmail.com>2013-09-15 12:55:42 +0100
committerarphaman <arphaman@gmail.com>2013-09-15 12:55:42 +0100
commit1192439fb8af94934f4b98bc55fdf25b17786527 (patch)
tree90e999d908d8cb490a3a2caa30d269eadf6c5c8a
parent2cf3fb6ca004470326987a6392555082945d0b36 (diff)
downloadflang-1192439fb8af94934f4b98bc55fdf25b17786527.tar.gz
perform init typechecking instead of assignment typechecking for PARAMETER constants
-rw-r--r--lib/Sema/SemaDecl.cpp8
-rw-r--r--test/Sema/parameter.f952
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'}}