Очевидно, что это не ошибка, ваш код не является действительным scala. Вы можете сделать это вместо:
lazy val User = new Magic[User].using("users")
(соглашение будет состоять из строчных букв "пользователь", оставляя заглавную букву, чтобы она соответствовала предполагаемому коду)
объект - это объявление, а не выражение. Объявление объекта
object ObjectName extends Ancestor(ancestor_constructor_arguments) {
// body: data, method and initialization code
}
с большинством частей по желанию.
Вы должны выполнить адаптацию либо с помощью аргументов конструктора, либо с помощью кода инициализации в теле объекта.
Поскольку вы не добавляете поведение в класс Magic, похоже, в любом случае нет необходимости объявлять объект.