diff options
author | Thomas Corbat | 2017-05-08 09:41:26 +0000 |
---|---|---|
committer | Thomas Corbat | 2017-05-08 17:23:13 +0000 |
commit | 0f27b20848e526bfddea0de20693696885cb214d (patch) | |
tree | 5d7434ceae1a1fc8039771dfca333751a11e8883 /core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java | |
parent | fb898b608824b0a4354adce9c5611808d879ba8d (diff) | |
download | org.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.java | 13 |
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) { |