diff --git a/spec/compiler/semantic/generic_class_spec.cr b/spec/compiler/semantic/generic_class_spec.cr index 6e8f48d486f2..a8759d096d4b 100644 --- a/spec/compiler/semantic/generic_class_spec.cr +++ b/spec/compiler/semantic/generic_class_spec.cr @@ -324,7 +324,7 @@ describe "Semantic: generic class" do class Bar < Foo end ), - "wrong number of type vars for Foo(T) (given 0, expected 1)" + "generic type arguments must be specified when inheriting Foo(T)" end %w(Object Value Reference Number Int Float Struct Class Proc Tuple Enum StaticArray Pointer).each do |type| diff --git a/spec/compiler/semantic/module_spec.cr b/spec/compiler/semantic/module_spec.cr index b857fd3d5e7f..8ea5217f5ad7 100644 --- a/spec/compiler/semantic/module_spec.cr +++ b/spec/compiler/semantic/module_spec.cr @@ -101,7 +101,7 @@ describe "Semantic: module" do "wrong number of type vars for Foo(T, U) (given 1, expected 2)" end - it "includes generic module but wrong number of arguments 2" do + it "errors if including generic module and not specifying type vars" do assert_error " module Foo(T) end @@ -110,7 +110,7 @@ describe "Semantic: module" do include Foo end ", - "wrong number of type vars for Foo(T) (given 0, expected 1)" + "generic type arguments must be specified when including Foo(T)" end it "includes generic module explicitly" do diff --git a/src/compiler/crystal/semantic/top_level_visitor.cr b/src/compiler/crystal/semantic/top_level_visitor.cr index d3052dfd15b2..a5b5bac70723 100644 --- a/src/compiler/crystal/semantic/top_level_visitor.cr +++ b/src/compiler/crystal/semantic/top_level_visitor.cr @@ -116,7 +116,7 @@ class Crystal::TopLevelVisitor < Crystal::SemanticVisitor find_root_generic_type_parameters: false).devirtualize case superclass when GenericClassType - node_superclass.raise "wrong number of type vars for #{superclass} (given 0, expected #{superclass.type_vars.size})" + node_superclass.raise "generic type arguments must be specified when inheriting #{superclass}" when NonGenericClassType, GenericClassInstanceType if superclass == @program.enum node_superclass.raise "can't inherit Enum. Use the enum keyword to define enums" @@ -980,7 +980,7 @@ class Crystal::TopLevelVisitor < Crystal::SemanticVisitor type = lookup_type(node_name) case type when GenericModuleType - node.raise "wrong number of type vars for #{type} (given 0, expected #{type.type_vars.size})" + node.raise "generic type arguments must be specified when including #{type}" when .module? # OK else