Update GenericToken interface to expose directly region methods

This commit is contained in:
gonzalo
2017-10-22 21:10:43 -03:00
parent 0e011767ce
commit e8fdbdbca4
13 changed files with 235 additions and 183 deletions

View File

@ -22,15 +22,33 @@ public interface GenericToken {
*/ */
GenericToken getPreviousSpecialGenericToken(); GenericToken getPreviousSpecialGenericToken();
/**
* Obtain the region where the token occupies in the source file.
* @return the region
*/
RegionByLine getRegionByLine();
/** /**
* Gets the token's text. * Gets the token's text.
* @return the token's text * @return the token's text
*/ */
String getImage(); String getImage();
/**
* Gets the line where the token's region begins
* @return a non-negative integer containing the begin line
*/
int getBeginLine();
/**
* Gets the line where the token's region ends
* @return a non-negative integer containing the end line
*/
int getEndLine();
/**
* Gets the column offset from the start of the begin line where the token's region begins
* @return a non-negative integer containing the begin column
*/
int getBeginColumn();
/**
* Gets the column offset from the start of the end line where the token's region ends
* @return a non-negative integer containing the begin column
*/
int getEndColumn();
} }

View File

@ -1,35 +0,0 @@
/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.lang.ast;
/**
* Represents a region in a source file bounded by a (beginLine, beginColumn) and (endLine, endColumn).
*/
public interface RegionByLine {
/**
* Gets the line where the region begins
* @return a non-negative integer containing the begin line
*/
int getBeginLine();
/**
* Gets the line where the region ends
* @return a non-negative integer containing the end line
*/
int getEndLine();
/**
* Gets the column offset from the start of the begin line where the region begins
* @return a non-negative integer containing the begin column
*/
int getBeginColumn();
/**
* Gets the column offset from the start of the end line where the region ends
* @return a non-negative integer containing the begin column
*/
int getEndColumn();
}

View File

@ -1,72 +0,0 @@
/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.lang.ast;
/**
* Default immutable implementation for the RegionByLine interface which is used by {@link GenericToken}
*/
public class RegionByLineImpl implements RegionByLine {
private int beginLine;
private int endLine;
private int beginColumn;
private int endColumn;
/**
* Create an immutable instance with all the corresponding fields. Every field requires to be non-negative
* @param beginLine the line where the region begins
* @param endLine the line where the region ends
* @param beginColumn the column offset from the start of the begin line where the region begins
* @param endColumn the column offset from the start of the end line where the region ends
*/
public RegionByLineImpl(final int beginLine, final int endLine, final int beginColumn, final int endColumn) {
setBeginLine(beginLine);
setEndLine(endLine);
setBeginColumn(beginColumn);
setEndColumn(endColumn);
}
private void setBeginLine(final int beginLine) {
this.beginLine = requireNonNegative(beginLine);
}
private void setEndLine(final int endLine) {
this.endLine = requireNonNegative(endLine);
}
private void setBeginColumn(final int beginColumn) {
this.beginColumn = requireNonNegative(beginColumn);
}
private void setEndColumn(final int endColumn) {
this.endColumn = requireNonNegative(endColumn);
}
private int requireNonNegative(final int value) {
if (value < 0) {
throw new IllegalArgumentException("value = " + value + " must be non-negative");
}
return value;
}
@Override
public int getBeginLine() {
return beginLine;
}
@Override
public int getEndLine() {
return endLine;
}
@Override
public int getBeginColumn() {
return beginColumn;
}
@Override
public int getEndColumn() {
return endColumn;
}
}

View File

@ -44,8 +44,6 @@
<replace file="${target}/net/sourceforge/pmd/lang/cpp/ast/Token.java"> <replace file="${target}/net/sourceforge/pmd/lang/cpp/ast/Token.java">
<replacetoken>public class Token implements java.io.Serializable</replacetoken> <replacetoken>public class Token implements java.io.Serializable</replacetoken>
<replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken; <replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken;
import net.sourceforge.pmd.lang.ast.RegionByLine;
import net.sourceforge.pmd.lang.ast.RegionByLineImpl;
public class Token implements GenericToken, java.io.Serializable]]></replacevalue> public class Token implements GenericToken, java.io.Serializable]]></replacevalue>
</replace> </replace>
@ -65,15 +63,31 @@ public class Token implements GenericToken, java.io.Serializable]]></replacevalu
return specialToken; return specialToken;
} }
@Override
public RegionByLine getRegionByLine() {
return new RegionByLineImpl(beginLine, endLine, beginColumn, endColumn);
}
@Override @Override
public String getImage() { public String getImage() {
return image; return image;
} }
@Override
public int getBeginLine() {
return beginLine;
}
@Override
public int getEndLine() {
return endLine;
}
@Override
public int getBeginColumn() {
return beginColumn;
}
@Override
public int getEndColumn() {
return endColumn;
}
]]></replacevalue> ]]></replacevalue>
</replace> </replace>

View File

@ -86,8 +86,6 @@ public class]]></replacevalue>
<replace file="${target}/net/sourceforge/pmd/lang/java/ast/Token.java"> <replace file="${target}/net/sourceforge/pmd/lang/java/ast/Token.java">
<replacetoken>public class Token implements java.io.Serializable</replacetoken> <replacetoken>public class Token implements java.io.Serializable</replacetoken>
<replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken; <replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken;
import net.sourceforge.pmd.lang.ast.RegionByLine;
import net.sourceforge.pmd.lang.ast.RegionByLineImpl;
public class Token implements GenericToken, java.io.Serializable]]></replacevalue> public class Token implements GenericToken, java.io.Serializable]]></replacevalue>
</replace> </replace>
@ -107,15 +105,31 @@ public class Token implements GenericToken, java.io.Serializable]]></replacevalu
return specialToken; return specialToken;
} }
@Override
public RegionByLine getRegionByLine() {
return new RegionByLineImpl(beginLine, endLine, beginColumn, endColumn);
}
@Override @Override
public String getImage() { public String getImage() {
return image; return image;
} }
@Override
public int getBeginLine() {
return beginLine;
}
@Override
public int getEndLine() {
return endLine;
}
@Override
public int getBeginColumn() {
return beginColumn;
}
@Override
public int getEndColumn() {
return endColumn;
}
]]></replacevalue> ]]></replacevalue>
</replace> </replace>

View File

@ -44,8 +44,6 @@
<replace file="${target}/net/sourceforge/pmd/lang/ecmascript5/ast/Token.java"> <replace file="${target}/net/sourceforge/pmd/lang/ecmascript5/ast/Token.java">
<replacetoken>public class Token implements java.io.Serializable</replacetoken> <replacetoken>public class Token implements java.io.Serializable</replacetoken>
<replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken; <replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken;
import net.sourceforge.pmd.lang.ast.RegionByLine;
import net.sourceforge.pmd.lang.ast.RegionByLineImpl;
public class Token implements GenericToken, java.io.Serializable]]></replacevalue> public class Token implements GenericToken, java.io.Serializable]]></replacevalue>
</replace> </replace>
@ -65,15 +63,31 @@ public class Token implements GenericToken, java.io.Serializable]]></replacevalu
return specialToken; return specialToken;
} }
@Override
public RegionByLine getRegionByLine() {
return new RegionByLineImpl(beginLine, endLine, beginColumn, endColumn);
}
@Override @Override
public String getImage() { public String getImage() {
return image; return image;
} }
@Override
public int getBeginLine() {
return beginLine;
}
@Override
public int getEndLine() {
return endLine;
}
@Override
public int getBeginColumn() {
return beginColumn;
}
@Override
public int getEndColumn() {
return endColumn;
}
]]></replacevalue> ]]></replacevalue>
</replace> </replace>
</target> </target>

View File

@ -64,8 +64,6 @@ public class]]></replacevalue>
<replace file="${target}/net/sourceforge/pmd/lang/jsp/ast/Token.java"> <replace file="${target}/net/sourceforge/pmd/lang/jsp/ast/Token.java">
<replacetoken>public class Token implements java.io.Serializable</replacetoken> <replacetoken>public class Token implements java.io.Serializable</replacetoken>
<replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken; <replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken;
import net.sourceforge.pmd.lang.ast.RegionByLine;
import net.sourceforge.pmd.lang.ast.RegionByLineImpl;
public class Token implements GenericToken, java.io.Serializable]]></replacevalue> public class Token implements GenericToken, java.io.Serializable]]></replacevalue>
</replace> </replace>
@ -85,15 +83,31 @@ public class Token implements GenericToken, java.io.Serializable]]></replacevalu
return specialToken; return specialToken;
} }
@Override
public RegionByLine getRegionByLine() {
return new RegionByLineImpl(beginLine, endLine, beginColumn, endColumn);
}
@Override @Override
public String getImage() { public String getImage() {
return image; return image;
} }
@Override
public int getBeginLine() {
return beginLine;
}
@Override
public int getEndLine() {
return endLine;
}
@Override
public int getBeginColumn() {
return beginColumn;
}
@Override
public int getEndColumn() {
return endColumn;
}
]]></replacevalue> ]]></replacevalue>
</replace> </replace>

View File

@ -44,8 +44,6 @@
<replace file="${target}/net/sourceforge/pmd/lang/matlab/ast/Token.java"> <replace file="${target}/net/sourceforge/pmd/lang/matlab/ast/Token.java">
<replacetoken>public class Token implements java.io.Serializable</replacetoken> <replacetoken>public class Token implements java.io.Serializable</replacetoken>
<replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken; <replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken;
import net.sourceforge.pmd.lang.ast.RegionByLine;
import net.sourceforge.pmd.lang.ast.RegionByLineImpl;
public class Token implements GenericToken, java.io.Serializable]]></replacevalue> public class Token implements GenericToken, java.io.Serializable]]></replacevalue>
</replace> </replace>
@ -65,15 +63,31 @@ public class Token implements GenericToken, java.io.Serializable]]></replacevalu
return specialToken; return specialToken;
} }
@Override
public RegionByLine getRegionByLine() {
return new RegionByLineImpl(beginLine, endLine, beginColumn, endColumn);
}
@Override @Override
public String getImage() { public String getImage() {
return image; return image;
} }
@Override
public int getBeginLine() {
return beginLine;
}
@Override
public int getEndLine() {
return endLine;
}
@Override
public int getBeginColumn() {
return beginColumn;
}
@Override
public int getEndColumn() {
return endColumn;
}
]]></replacevalue> ]]></replacevalue>
</replace> </replace>
</target> </target>

View File

@ -44,8 +44,6 @@
<replace file="${target}/net/sourceforge/pmd/lang/objectivec/ast/Token.java"> <replace file="${target}/net/sourceforge/pmd/lang/objectivec/ast/Token.java">
<replacetoken>public class Token implements java.io.Serializable</replacetoken> <replacetoken>public class Token implements java.io.Serializable</replacetoken>
<replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken; <replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken;
import net.sourceforge.pmd.lang.ast.RegionByLine;
import net.sourceforge.pmd.lang.ast.RegionByLineImpl;
public class Token implements GenericToken, java.io.Serializable]]></replacevalue> public class Token implements GenericToken, java.io.Serializable]]></replacevalue>
</replace> </replace>
@ -65,15 +63,31 @@ public class Token implements GenericToken, java.io.Serializable]]></replacevalu
return specialToken; return specialToken;
} }
@Override
public RegionByLine getRegionByLine() {
return new RegionByLineImpl(beginLine, endLine, beginColumn, endColumn);
}
@Override @Override
public String getImage() { public String getImage() {
return image; return image;
} }
@Override
public int getBeginLine() {
return beginLine;
}
@Override
public int getEndLine() {
return endLine;
}
@Override
public int getBeginColumn() {
return beginColumn;
}
@Override
public int getEndColumn() {
return endColumn;
}
]]></replacevalue> ]]></replacevalue>
</replace> </replace>
</target> </target>

View File

@ -81,8 +81,6 @@ public class]]></replacevalue>
<replace file="${target}/net/sourceforge/pmd/lang/plsql/ast/Token.java"> <replace file="${target}/net/sourceforge/pmd/lang/plsql/ast/Token.java">
<replacetoken>public class Token implements java.io.Serializable</replacetoken> <replacetoken>public class Token implements java.io.Serializable</replacetoken>
<replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken; <replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken;
import net.sourceforge.pmd.lang.ast.RegionByLine;
import net.sourceforge.pmd.lang.ast.RegionByLineImpl;
public class Token implements GenericToken, java.io.Serializable]]></replacevalue> public class Token implements GenericToken, java.io.Serializable]]></replacevalue>
</replace> </replace>
@ -102,15 +100,31 @@ public class Token implements GenericToken, java.io.Serializable]]></replacevalu
return specialToken; return specialToken;
} }
@Override
public RegionByLine getRegionByLine() {
return new RegionByLineImpl(beginLine, endLine, beginColumn, endColumn);
}
@Override @Override
public String getImage() { public String getImage() {
return image; return image;
} }
@Override
public int getBeginLine() {
return beginLine;
}
@Override
public int getEndLine() {
return endLine;
}
@Override
public int getBeginColumn() {
return beginColumn;
}
@Override
public int getEndColumn() {
return endColumn;
}
]]></replacevalue> ]]></replacevalue>
</replace> </replace>

View File

@ -44,8 +44,6 @@
<replace file="${target}/net/sourceforge/pmd/lang/python/ast/Token.java"> <replace file="${target}/net/sourceforge/pmd/lang/python/ast/Token.java">
<replacetoken>public class Token implements java.io.Serializable</replacetoken> <replacetoken>public class Token implements java.io.Serializable</replacetoken>
<replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken; <replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken;
import net.sourceforge.pmd.lang.ast.RegionByLine;
import net.sourceforge.pmd.lang.ast.RegionByLineImpl;
public class Token implements GenericToken, java.io.Serializable]]></replacevalue> public class Token implements GenericToken, java.io.Serializable]]></replacevalue>
</replace> </replace>
@ -65,15 +63,31 @@ public class Token implements GenericToken, java.io.Serializable]]></replacevalu
return specialToken; return specialToken;
} }
@Override
public RegionByLine getRegionByLine() {
return new RegionByLineImpl(beginLine, endLine, beginColumn, endColumn);
}
@Override @Override
public String getImage() { public String getImage() {
return image; return image;
} }
@Override
public int getBeginLine() {
return beginLine;
}
@Override
public int getEndLine() {
return endLine;
}
@Override
public int getBeginColumn() {
return beginColumn;
}
@Override
public int getEndColumn() {
return endColumn;
}
]]></replacevalue> ]]></replacevalue>
</replace> </replace>
</target> </target>

View File

@ -65,8 +65,6 @@ public class]]></replacevalue>
<replace file="${target}/net/sourceforge/pmd/lang/vf/ast/Token.java"> <replace file="${target}/net/sourceforge/pmd/lang/vf/ast/Token.java">
<replacetoken>public class Token implements java.io.Serializable</replacetoken> <replacetoken>public class Token implements java.io.Serializable</replacetoken>
<replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken; <replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken;
import net.sourceforge.pmd.lang.ast.RegionByLine;
import net.sourceforge.pmd.lang.ast.RegionByLineImpl;
public class Token implements GenericToken, java.io.Serializable]]></replacevalue> public class Token implements GenericToken, java.io.Serializable]]></replacevalue>
</replace> </replace>
@ -86,14 +84,31 @@ public class Token implements GenericToken, java.io.Serializable]]></replacevalu
} }
@Override @Override
public RegionByLine getRegionByLine() { public String getImage() {
return new RegionByLineImpl(beginLine, endLine, beginColumn, endColumn); return image;
}
@Override
public int getBeginLine() {
return beginLine;
} }
@Override @Override
public String getImage() { public int getEndLine() {
return image; return endLine;
}]]></replacevalue> }
@Override
public int getBeginColumn() {
return beginColumn;
}
@Override
public int getEndColumn() {
return endColumn;
}
]]></replacevalue>
</replace> </replace>
<delete> <delete>

View File

@ -77,8 +77,6 @@ public class]]></replacevalue>
<replace file="${target}/net/sourceforge/pmd/lang/vm/ast/Token.java"> <replace file="${target}/net/sourceforge/pmd/lang/vm/ast/Token.java">
<replacetoken>public class Token implements java.io.Serializable</replacetoken> <replacetoken>public class Token implements java.io.Serializable</replacetoken>
<replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken; <replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken;
import net.sourceforge.pmd.lang.ast.RegionByLine;
import net.sourceforge.pmd.lang.ast.RegionByLineImpl;
public class Token implements GenericToken, java.io.Serializable]]></replacevalue> public class Token implements GenericToken, java.io.Serializable]]></replacevalue>
</replace> </replace>
@ -98,15 +96,31 @@ public class Token implements GenericToken, java.io.Serializable]]></replacevalu
return specialToken; return specialToken;
} }
@Override
public RegionByLine getRegionByLine() {
return new RegionByLineImpl(beginLine, endLine, beginColumn, endColumn);
}
@Override @Override
public String getImage() { public String getImage() {
return image; return image;
} }
@Override
public int getBeginLine() {
return beginLine;
}
@Override
public int getEndLine() {
return endLine;
}
@Override
public int getBeginColumn() {
return beginColumn;
}
@Override
public int getEndColumn() {
return endColumn;
}
]]></replacevalue> ]]></replacevalue>
</replace> </replace>
</target> </target>