fix: ruby line counter should start from 1 instead of 0

This commit is contained in:
Gang ZHANG 2022-09-14 08:45:48 +08:00
parent 75f07ae8c1
commit 7dfb555a41
2 changed files with 43 additions and 23 deletions

View File

@ -59,7 +59,7 @@ public class JRubyVisitor extends NoopVisitor {
@Override
public Object visitModuleNode(ModuleNode node) {
String name = helper.getName(node.getCPath());
context.foundNamespace(name,node.getPosition().getStartLine());
context.foundNamespace(name,node.getPosition().getStartLine()+1);
super.visitModuleNode(node);
context.exitLastedEntity();
return null;
@ -67,7 +67,7 @@ public class JRubyVisitor extends NoopVisitor {
@Override
public Object visitClassNode(ClassNode node) {
TypeEntity type = context.foundNewType(helper.getName(node.getCPath()),node.getPosition().getStartLine());
TypeEntity type = context.foundNewType(helper.getName(node.getCPath()),node.getPosition().getStartLine()+1);
Node superNode = node.getSuper();
if (superNode instanceof ConstNode ||
@ -96,7 +96,7 @@ public class JRubyVisitor extends NoopVisitor {
public Object visitFCallNode(FCallNode node) {
String fname = helper.getName(node);
Collection<String> params = getParams(node);
context.processSpecialFuncCall(fname, params, node.getPosition().getStartLine());
context.processSpecialFuncCall(fname, params, node.getPosition().getStartLine()+1);
return super.visitFCallNode(node);
}
@ -121,7 +121,7 @@ public class JRubyVisitor extends NoopVisitor {
String fname = helper.getName(node);
Collection<String> params = getParams(node);
addCallToReceiverVar(node, fname);
context.processSpecialFuncCall(fname, params, node.getPosition().getStartLine());
context.processSpecialFuncCall(fname, params, node.getPosition().getStartLine()+1);
return super.visitCallNode(node);
}
@ -142,7 +142,7 @@ public class JRubyVisitor extends NoopVisitor {
public Object visitUnaryCallNode(UnaryCallNode node) {
String fname = helper.getName(node);
Collection<String> params = new ArrayList<>();
context.processSpecialFuncCall(fname, params, node.getPosition().getStartLine());
context.processSpecialFuncCall(fname, params, node.getPosition().getStartLine()+1);
return super.visitUnaryCallNode(node);
}
@ -156,8 +156,8 @@ public class JRubyVisitor extends NoopVisitor {
@Override
public Object visitDefnNode(DefnNode node) {
FunctionEntity method = context.foundMethodDeclarator(node.getName(),node.getPosition().getStartLine());
method.setLine(node.getPosition().getStartLine());
FunctionEntity method = context.foundMethodDeclarator(node.getName(),node.getPosition().getStartLine()+1);
method.setLine(node.getPosition().getStartLine()+1);
super.visitDefnNode(node);
context.exitLastedEntity();
@ -174,8 +174,8 @@ public class JRubyVisitor extends NoopVisitor {
String className = ((INameNode) varNode).getName();
Entity entity = context.foundEntityWithName(GenericName.build(className));
if (entity != null && entity instanceof ContainerEntity) {
FunctionEntity method = context.foundMethodDeclarator(((ContainerEntity) entity), node.getName(),node.getPosition().getStartLine());
method.setLine(node.getPosition().getStartLine());
FunctionEntity method = context.foundMethodDeclarator(((ContainerEntity) entity), node.getName(),node.getPosition().getStartLine()+1);
method.setLine(node.getPosition().getStartLine()+1);
handled = true;
}
@ -183,16 +183,16 @@ public class JRubyVisitor extends NoopVisitor {
String varName = ((INameNode) varNode).getName();
Entity var = context.foundEntityWithName(GenericName.build(varName));
if (var != null && var instanceof ContainerEntity) {
FunctionEntity method = context.foundMethodDeclarator(((ContainerEntity) var), node.getName(),node.getPosition().getStartLine());
method.setLine(node.getPosition().getStartLine());
FunctionEntity method = context.foundMethodDeclarator(((ContainerEntity) var), node.getName(),node.getPosition().getStartLine()+1);
method.setLine(node.getPosition().getStartLine()+1);
handled = true;
}
}
if (!handled) {
// fallback to add it to last container
FunctionEntity method = context.foundMethodDeclarator(node.getName(),node.getPosition().getStartLine());
method.setLine(node.getPosition().getStartLine());
FunctionEntity method = context.foundMethodDeclarator(node.getName(),node.getPosition().getStartLine()+1);
method.setLine(node.getPosition().getStartLine()+1);
}
super.visitDefsNode(node);
context.exitLastedEntity();
@ -201,31 +201,31 @@ public class JRubyVisitor extends NoopVisitor {
@Override
public Object visitGlobalVarNode(GlobalVarNode node) {
context.foundVarDefinition(context.globalScope(), node.getName(),node.getPosition().getStartLine());
context.foundVarDefinition(context.globalScope(), node.getName(),node.getPosition().getStartLine()+1);
return super.visitGlobalVarNode(node);
}
@Override
public Object visitInstVarNode(InstVarNode node) {
context.foundVarDefinition(context.currentType(), node.getName(),node.getPosition().getStartLine());
context.foundVarDefinition(context.currentType(), node.getName(),node.getPosition().getStartLine()+1);
return super.visitInstVarNode(node);
}
@Override
public Object visitClassVarAsgnNode(ClassVarAsgnNode node) {
context.foundVarDefinition(helper.getScopeOfVar(node,context), node.getName(),node.getPosition().getStartLine());
context.foundVarDefinition(helper.getScopeOfVar(node,context), node.getName(),node.getPosition().getStartLine()+1);
return super.visitClassVarAsgnNode(node);
}
@Override
public Object visitClassVarDeclNode(ClassVarDeclNode node) {
context.foundVarDefinition(context.currentType(), node.getName(),node.getPosition().getStartLine());
context.foundVarDefinition(context.currentType(), node.getName(),node.getPosition().getStartLine()+1);
return super.visitClassVarDeclNode(node);
}
@Override
public Object visitClassVarNode(ClassVarNode node) {
context.foundVarDefinition(context.currentType(), node.getName(),node.getPosition().getStartLine());
context.foundVarDefinition(context.currentType(), node.getName(),node.getPosition().getStartLine()+1);
return super.visitClassVarNode(node);
}
@ -236,25 +236,26 @@ public class JRubyVisitor extends NoopVisitor {
@Override
public Object visitDVarNode(DVarNode node) {
context.foundVarDefinition(context.lastContainer(), node.getName(),node.getPosition().getStartLine());
context.foundVarDefinition(context.lastContainer(), node.getName(),node.getPosition().getStartLine()+1);
return super.visitDVarNode(node);
}
@Override
public Object visitDAsgnNode(DAsgnNode node) {
context.foundVarDefinition(helper.getScopeOfVar(node,context), node.getName(),node.getPosition().getStartLine());
context.foundVarDefinition(helper.getScopeOfVar(node,context), node.getName(),node.getPosition().getStartLine()+1);
expressionUsage.foundExpression(node.getValue());
return super.visitDAsgnNode(node);
}
@Override
public Object visitGlobalAsgnNode(GlobalAsgnNode node) {
context.foundVarDefinition(helper.getScopeOfVar(node,context), node.getName(),node.getPosition().getStartLine());
context.foundVarDefinition(helper.getScopeOfVar(node,context), node.getName(),node.getPosition().getStartLine()+1);
return super.visitGlobalAsgnNode(node);
}
@Override
public Object visitInstAsgnNode(InstAsgnNode node) {
context.foundVarDefinition(helper.getScopeOfVar(node,context), node.getName(),node.getPosition().getStartLine());
context.foundVarDefinition(helper.getScopeOfVar(node,context), node.getName(),node.getPosition().getStartLine()+1);
return super.visitInstAsgnNode(node);
}
@ -267,7 +268,7 @@ public class JRubyVisitor extends NoopVisitor {
@Override
public Object visitLocalAsgnNode(LocalAsgnNode node) {
context.foundVarDefinition(helper.getScopeOfVar(node,context), node.getName(),node.getPosition().getStartLine());
context.foundVarDefinition(helper.getScopeOfVar(node,context), node.getName(),node.getPosition().getStartLine()+1);
return super.visitLocalAsgnNode(node);
}

View File

@ -0,0 +1,19 @@
class Class
def test
var_int = 1
var_c = Class.new
@@inst_var = Class.new
@class_var = Class.new
end
def operator_is_call
var_compose = "c" + 1 #ruby treat '+' as call
var_1 = true
var_2 = true && false
var_3 = !true
var_4 = true and false
var_5 = 3 < 2
var_6 = 3 << 2
var_7 <<= 3;
end
end