Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use Kotlin's ArrayDeque implementation #4218

Merged
merged 1 commit into from Nov 1, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -21,13 +21,12 @@ import org.jetbrains.kotlin.kdoc.psi.impl.KDocSection
import org.jetbrains.kotlin.kdoc.psi.impl.KDocTag
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtFile
import java.util.ArrayDeque

fun ASTNode.tokenSequence(skipTreesOf: Set<Class<out PsiElement>>): Sequence<ASTNode> = sequence {
val queue = ArrayDeque<ASTNode>()
queue.add(this@tokenSequence)
do {
val curr = queue.pop()
val curr = queue.removeFirst()
if (curr.psi::class.java !in skipTreesOf) {
// Yields only tokens which can be identified in the source code.
// Composite elements, e.g. classes or files, are abstractions over many leaf nodes.
Expand Down
Expand Up @@ -14,7 +14,6 @@ import org.jetbrains.kotlin.com.intellij.psi.PsiFile
import org.jetbrains.kotlin.psi.KtClass
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtNamedFunction
import java.util.ArrayDeque

/**
* When a class overrides the equals() method it should also override the hashCode() method.
Expand Down Expand Up @@ -72,9 +71,9 @@ class EqualsWithHashCodeExist(config: Config = Config.empty) : Rule(config) {
override fun visitClassOrObject(classOrObject: KtClassOrObject) {
if (classOrObject is KtClass && classOrObject.isData()) return

queue.push(ViolationHolder())
queue.addFirst(ViolationHolder())
super.visitClassOrObject(classOrObject)
if (queue.pop().violation()) {
if (queue.removeFirst().violation()) {
report(
CodeSmell(
issue,
Expand All @@ -88,8 +87,8 @@ class EqualsWithHashCodeExist(config: Config = Config.empty) : Rule(config) {

override fun visitNamedFunction(function: KtNamedFunction) {
if (!function.isTopLevel) {
if (function.isEqualsFunction()) queue.peek().equals = true
if (function.isHashCodeFunction()) queue.peek().hashCode = true
if (function.isEqualsFunction()) queue.first().equals = true
if (function.isHashCodeFunction()) queue.first().hashCode = true
}
}
}
Expand Down