mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-07 17:56:01 +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.m1();
|
||||||
// a.m2();
|
// a.m2();
|
||||||
// };
|
// };
|
||||||
public void _testImplicitArgument() throws Exception {
|
public void testImplicitArgument() throws Exception {
|
||||||
AssertionHelper a = getCPPAssertionHelper();
|
AssertionHelper a = getCPPAssertionHelper();
|
||||||
a.assertReadWriteFlags("a.m1", READ | WRITE);
|
a.assertReadWriteFlags("a.m1", READ | WRITE);
|
||||||
a.assertReadWriteFlags("a.m2", READ);
|
a.assertReadWriteFlags("a.m2", READ);
|
||||||
|
|
|
@ -146,7 +146,7 @@ public abstract class VariableReadWriteFlags {
|
||||||
}
|
}
|
||||||
if (expr instanceof IASTFunctionCallExpression) {
|
if (expr instanceof IASTFunctionCallExpression) {
|
||||||
if (node.getPropertyInParent() == IASTFunctionCallExpression.FUNCTION_NAME) {
|
if (node.getPropertyInParent() == IASTFunctionCallExpression.FUNCTION_NAME) {
|
||||||
return READ;
|
return rwFunctionName((IASTExpression) node);
|
||||||
}
|
}
|
||||||
return rwArgumentForFunctionCall((IASTFunctionCallExpression) expr, node, indirection);
|
return rwArgumentForFunctionCall((IASTFunctionCallExpression) expr, node, indirection);
|
||||||
}
|
}
|
||||||
|
@ -160,6 +160,10 @@ public abstract class VariableReadWriteFlags {
|
||||||
return READ | WRITE; // fall back
|
return READ | WRITE; // fall back
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected int rwFunctionName(IASTExpression node) {
|
||||||
|
return READ;
|
||||||
|
}
|
||||||
|
|
||||||
protected int rwArgumentForFunctionCall(final IASTFunctionCallExpression funcCall,
|
protected int rwArgumentForFunctionCall(final IASTFunctionCallExpression funcCall,
|
||||||
IASTNode argument, int indirection) {
|
IASTNode argument, int indirection) {
|
||||||
final IASTInitializerClause[] args = funcCall.getArguments();
|
final IASTInitializerClause[] args = funcCall.getArguments();
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
package org.eclipse.cdt.internal.core.dom.parser.cpp.semantics;
|
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.IASTDeclarator;
|
||||||
|
import org.eclipse.cdt.core.dom.ast.IASTExpression;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTImplicitName;
|
import org.eclipse.cdt.core.dom.ast.IASTImplicitName;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTImplicitNameOwner;
|
import org.eclipse.cdt.core.dom.ast.IASTImplicitNameOwner;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTName;
|
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.ICPPASTConstructorInitializer;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUnaryExpression;
|
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.ICPPConstructor;
|
||||||
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionType;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPReferenceType;
|
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.ITypeContainer;
|
||||||
import org.eclipse.cdt.internal.core.dom.parser.VariableReadWriteFlags;
|
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);
|
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
|
@Override
|
||||||
protected int rwAssignmentToType(IType type, int indirection) {
|
protected int rwAssignmentToType(IType type, int indirection) {
|
||||||
if (indirection == 0) {
|
if (indirection == 0) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue