Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Corbat2017-05-08 09:41:26 +0000
committerThomas Corbat2017-05-08 17:23:13 +0000
commit0f27b20848e526bfddea0de20693696885cb214d (patch)
tree5d7434ceae1a1fc8039771dfca333751a11e8883 /core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java
parentfb898b608824b0a4354adce9c5611808d879ba8d (diff)
downloadorg.eclipse.cdt-0f27b20848e526bfddea0de20693696885cb214d.tar.gz
org.eclipse.cdt-0f27b20848e526bfddea0de20693696885cb214d.tar.xz
org.eclipse.cdt-0f27b20848e526bfddea0de20693696885cb214d.zip
Bug 516298 - Improved recognition of [[noreturn]] attribute
Change-Id: I275f0ee38045600c104d5ed7e2c14fec04eac046 Signed-off-by: Thomas Corbat <tcorbat@hsr.ch>
Diffstat (limited to 'core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java')
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java13
1 files changed, 12 insertions, 1 deletions
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java
index e4bd2c3c6e9..52925f4c5ac 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java
@@ -18,6 +18,7 @@ import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUti
import org.eclipse.cdt.core.dom.ILinkage;
import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
import org.eclipse.cdt.core.dom.ast.DOMException;
+import org.eclipse.cdt.core.dom.ast.IASTAttributeOwner;
import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
@@ -663,7 +664,17 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
@Override
public boolean isNoReturn() {
ICPPASTFunctionDeclarator dtor = getPreferredDtor();
- return dtor != null && AttributeUtil.hasNoreturnAttribute(dtor);
+ if (dtor == null) {
+ return false;
+ }
+ if (AttributeUtil.hasNoreturnAttribute(dtor)) {
+ return true;
+ }
+ IASTNode parent = dtor.getParent();
+ if (parent instanceof IASTAttributeOwner) {
+ return AttributeUtil.hasNoreturnAttribute((IASTAttributeOwner) parent);
+ }
+ return false;
}
public static ICPPExecution getFunctionBodyExecution(ICPPFunction function, IASTNode point) {

Back to the top