mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-25 23:05:00 +00:00
parent
fb23b6c26f
commit
5af73b1dcf
3 changed files with 129 additions and 0 deletions
65
aider/queries/tree-sitter-languages/scala-tags.scm
Normal file
65
aider/queries/tree-sitter-languages/scala-tags.scm
Normal file
|
@ -0,0 +1,65 @@
|
|||
; Definitions
|
||||
|
||||
(package_clause
|
||||
name: (package_identifier) @name.definition.module) @definition.module
|
||||
|
||||
(trait_definition
|
||||
name: (identifier) @name.definition.interface) @definition.interface
|
||||
|
||||
(enum_definition
|
||||
name: (identifier) @name.definition.enum) @definition.enum
|
||||
|
||||
(simple_enum_case
|
||||
name: (identifier) @name.definition.class) @definition.class
|
||||
|
||||
(full_enum_case
|
||||
name: (identifier) @name.definition.class) @definition.class
|
||||
|
||||
(class_definition
|
||||
name: (identifier) @name.definition.class) @definition.class
|
||||
|
||||
(object_definition
|
||||
name: (identifier) @name.definition.object) @definition.object
|
||||
|
||||
(function_definition
|
||||
name: (identifier) @name.definition.function) @definition.function
|
||||
|
||||
(val_definition
|
||||
pattern: (identifier) @name.definition.variable) @definition.variable
|
||||
|
||||
(given_definition
|
||||
name: (identifier) @name.definition.variable) @definition.variable
|
||||
|
||||
(var_definition
|
||||
pattern: (identifier) @name.definition.variable) @definition.variable
|
||||
|
||||
(val_declaration
|
||||
name: (identifier) @name.definition.variable) @definition.variable
|
||||
|
||||
(var_declaration
|
||||
name: (identifier) @name.definition.variable) @definition.variable
|
||||
|
||||
(type_definition
|
||||
name: (type_identifier) @name.definition.type) @definition.type
|
||||
|
||||
(class_parameter
|
||||
name: (identifier) @name.definition.property) @definition.property
|
||||
|
||||
; References
|
||||
|
||||
(call_expression
|
||||
(identifier) @name.reference.call) @reference.call
|
||||
|
||||
(instance_expression
|
||||
(type_identifier) @name.reference.interface) @reference.interface
|
||||
|
||||
(instance_expression
|
||||
(generic_type
|
||||
(type_identifier) @name.reference.interface)) @reference.interface
|
||||
|
||||
(extends_clause
|
||||
(type_identifier) @name.reference.class) @reference.class
|
||||
|
||||
(extends_clause
|
||||
(generic_type
|
||||
(type_identifier) @name.reference.class)) @reference.class
|
|
@ -381,6 +381,9 @@ class TestRepoMapAllLanguages(unittest.TestCase):
|
|||
def test_language_udev(self):
|
||||
self._test_language_repo_map("udev", "rules", "USB_DRIVER")
|
||||
|
||||
def test_language_scala(self):
|
||||
self._test_language_repo_map("scala", "scala", "Greeter")
|
||||
|
||||
def _test_language_repo_map(self, lang, key, symbol):
|
||||
"""Helper method to test repo map generation for a specific language."""
|
||||
# Get the fixture file path and name based on language
|
||||
|
|
61
tests/fixtures/languages/scala/test.scala
vendored
Normal file
61
tests/fixtures/languages/scala/test.scala
vendored
Normal file
|
@ -0,0 +1,61 @@
|
|||
package com.example.test
|
||||
|
||||
// A trait definition
|
||||
trait Greeter {
|
||||
def greet(name: String): String
|
||||
}
|
||||
|
||||
// A class definition with parameters
|
||||
class FormalGreeter(prefix: String) extends Greeter {
|
||||
// A method definition
|
||||
override def greet(name: String): String = {
|
||||
s"$prefix, $name!"
|
||||
}
|
||||
|
||||
// A val definition
|
||||
val defaultPrefix: String = "Hello"
|
||||
|
||||
// A var definition
|
||||
var counter: Int = 0
|
||||
}
|
||||
|
||||
// An object definition
|
||||
object GreeterFactory {
|
||||
// A function definition
|
||||
def createGreeter(formal: Boolean): Greeter = {
|
||||
if (formal) {
|
||||
new FormalGreeter("Good day")
|
||||
} else {
|
||||
new CasualGreeter
|
||||
}
|
||||
}
|
||||
|
||||
// A type definition
|
||||
type GreeterType = Greeter
|
||||
}
|
||||
|
||||
// An enum definition
|
||||
enum Greeting {
|
||||
// Simple enum cases
|
||||
case Hello, Hi, Hey
|
||||
|
||||
// Full enum case with parameters
|
||||
case Custom(text: String)
|
||||
}
|
||||
|
||||
// A class that uses generics
|
||||
class Container[T](val value: T) {
|
||||
def map[U](f: T => U): Container[U] = new Container(f(value))
|
||||
}
|
||||
|
||||
// A case class
|
||||
case class Person(name: String, age: Int) {
|
||||
def introduce(): String = {
|
||||
val greeter = GreeterFactory.createGreeter(age > 30)
|
||||
greeter.greet(name) + s" I am $age years old."
|
||||
}
|
||||
}
|
||||
|
||||
class CasualGreeter extends Greeter {
|
||||
override def greet(name: String): String = s"Hey, $name!"
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue