mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-05 16:56:04 +02:00
Fixed VariableReadWriteFlagsTest.testImplicitArgument.
This commit is contained in:
parent
e683d197ac
commit
a9662b7f9f
3 changed files with 16 additions and 2 deletions
|
@ -152,7 +152,7 @@ public class VariableReadWriteFlagsTest extends AST2BaseTest {
|
|||
// a.m1();
|
||||
// a.m2();
|
||||
// };
|
||||
public void _testImplicitArgument() throws Exception {
|
||||
public void testImplicitArgument() throws Exception {
|
||||
AssertionHelper a = getCPPAssertionHelper();
|
||||
a.assertReadWriteFlags("a.m1", READ | WRITE);
|
||||
a.assertReadWriteFlags("a.m2", READ);
|
||||
|
|
|
@ -146,7 +146,7 @@ public abstract class VariableReadWriteFlags {
|
|||
}
|
||||
if (expr instanceof IASTFunctionCallExpression) {
|
||||
if (node.getPropertyInParent() == IASTFunctionCallExpression.FUNCTION_NAME) {
|
||||
return READ;
|
||||
return rwFunctionName((IASTExpression) node);
|
||||
}
|
||||
return rwArgumentForFunctionCall((IASTFunctionCallExpression) expr, node, indirection);
|
||||
}
|
||||
|
@ -160,6 +160,10 @@ public abstract class VariableReadWriteFlags {
|
|||
return READ | WRITE; // fall back
|
||||
}
|
||||
|
||||
protected int rwFunctionName(IASTExpression node) {
|
||||
return READ;
|
||||
}
|
||||
|
||||
protected int rwArgumentForFunctionCall(final IASTFunctionCallExpression funcCall,
|
||||
IASTNode argument, int indirection) {
|
||||
final IASTInitializerClause[] args = funcCall.getArguments();
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
package org.eclipse.cdt.internal.core.dom.parser.cpp.semantics;
|
||||
|
||||
import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTImplicitName;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTImplicitNameOwner;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTName;
|
||||
|
@ -25,6 +26,7 @@ import org.eclipse.cdt.core.dom.ast.IVariable;
|
|||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConstructorInitializer;
|
||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUnaryExpression;
|
||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor;
|
||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionType;
|
||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPReferenceType;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.VariableReadWriteFlags;
|
||||
|
@ -91,6 +93,14 @@ public final class CPPVariableReadWriteFlags extends VariableReadWriteFlags {
|
|||
return super.rwInUnaryExpression(node, expr, indirection);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int rwFunctionName(IASTExpression node) {
|
||||
IType type= node.getExpressionType();
|
||||
if (type instanceof ICPPFunctionType && !((ICPPFunctionType) type).isConst())
|
||||
return READ | WRITE;
|
||||
return READ;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int rwAssignmentToType(IType type, int indirection) {
|
||||
if (indirection == 0) {
|
||||
|
|
Loading…
Add table
Reference in a new issue