diff --git a/conformance/results/mypy/literals_literalstring.toml b/conformance/results/mypy/literals_literalstring.toml index 5258d254..1bde97a4 100644 --- a/conformance/results/mypy/literals_literalstring.toml +++ b/conformance/results/mypy/literals_literalstring.toml @@ -6,17 +6,17 @@ output = """ literals_literalstring.py:36: error: Parameter 2 of Literal[...] is invalid [valid-type] literals_literalstring.py:37: error: Parameter 1 of Literal[...] is invalid [valid-type] literals_literalstring.py:43: error: Incompatible types in assignment (expression has type "Literal['two']", variable has type "Literal['']") [assignment] -literals_literalstring.py:74: error: Incompatible types in assignment (expression has type "int", variable has type "str") [assignment] -literals_literalstring.py:75: error: Incompatible types in assignment (expression has type "bytes", variable has type "str") [assignment] -literals_literalstring.py:157: error: Overloaded function signature 3 will never be matched: signature 2's parameter type(s) are the same or broader [overload-cannot-match] -literals_literalstring.py:167: error: Expression is of type "B", not "A" [assert-type] +literals_literalstring.py:73: error: Incompatible types in assignment (expression has type "int", variable has type "str") [assignment] +literals_literalstring.py:74: error: Incompatible types in assignment (expression has type "bytes", variable has type "str") [assignment] +literals_literalstring.py:156: error: Overloaded function signature 3 will never be matched: signature 2's parameter type(s) are the same or broader [overload-cannot-match] +literals_literalstring.py:166: error: Expression is of type "B", not "A" [assert-type] """ conformance_automated = "Fail" errors_diff = """ -Line 66: Expected 1 errors -Line 120: Expected 1 errors -Line 134: Expected 1 errors -Line 171: Expected 1 errors -Line 157: Unexpected errors ["literals_literalstring.py:157: error: Overloaded function signature 3 will never be matched: signature 2's parameter type(s) are the same or broader [overload-cannot-match]"] -Line 167: Unexpected errors ['literals_literalstring.py:167: error: Expression is of type "B", not "A" [assert-type]'] +Line 65: Expected 1 errors +Line 119: Expected 1 errors +Line 133: Expected 1 errors +Line 170: Expected 1 errors +Line 156: Unexpected errors ["literals_literalstring.py:156: error: Overloaded function signature 3 will never be matched: signature 2's parameter type(s) are the same or broader [overload-cannot-match]"] +Line 166: Unexpected errors ['literals_literalstring.py:166: error: Expression is of type "B", not "A" [assert-type]'] """ diff --git a/conformance/results/pyrefly/literals_literalstring.toml b/conformance/results/pyrefly/literals_literalstring.toml index 4f01e113..190cc520 100644 --- a/conformance/results/pyrefly/literals_literalstring.toml +++ b/conformance/results/pyrefly/literals_literalstring.toml @@ -5,10 +5,10 @@ output = """ ERROR literals_literalstring.py:36:29-42: Invalid type inside literal, `LiteralString` [invalid-literal] ERROR literals_literalstring.py:37:22-35: Invalid type inside literal, `LiteralString` [invalid-literal] ERROR literals_literalstring.py:43:23-24: `Literal['two']` is not assignable to `Literal['']` [bad-assignment] -ERROR literals_literalstring.py:66:25-47: `str` is not assignable to `LiteralString` [bad-assignment] -ERROR literals_literalstring.py:74:25-26: `Literal[3]` is not assignable to `LiteralString` [bad-assignment] -ERROR literals_literalstring.py:75:25-32: `Literal[b'test']` is not assignable to `LiteralString` [bad-assignment] -ERROR literals_literalstring.py:120:21-24: `str` is not assignable to upper bound `LiteralString` of type variable `TLiteral` [bad-specialization] -ERROR literals_literalstring.py:134:51-52: Argument `str` is not assignable to parameter `value` with type `LiteralString` in function `Container.__init__` [bad-argument-type] -ERROR literals_literalstring.py:171:21-24: `list[LiteralString]` is not assignable to `list[str]` [bad-assignment] +ERROR literals_literalstring.py:65:25-45: `str` is not assignable to `LiteralString` [bad-assignment] +ERROR literals_literalstring.py:73:25-26: `Literal[3]` is not assignable to `LiteralString` [bad-assignment] +ERROR literals_literalstring.py:74:25-32: `Literal[b'test']` is not assignable to `LiteralString` [bad-assignment] +ERROR literals_literalstring.py:119:21-24: `str` is not assignable to upper bound `LiteralString` of type variable `TLiteral` [bad-specialization] +ERROR literals_literalstring.py:133:51-52: Argument `str` is not assignable to parameter `value` with type `LiteralString` in function `Container.__init__` [bad-argument-type] +ERROR literals_literalstring.py:170:21-24: `list[LiteralString]` is not assignable to `list[str]` [bad-assignment] """ diff --git a/conformance/results/pyright/literals_literalstring.toml b/conformance/results/pyright/literals_literalstring.toml index 2146bdb4..e91750ea 100644 --- a/conformance/results/pyright/literals_literalstring.toml +++ b/conformance/results/pyright/literals_literalstring.toml @@ -4,19 +4,19 @@ literals_literalstring.py:36:29 - error: Type arguments for "Literal" must be No literals_literalstring.py:37:22 - error: Type arguments for "Literal" must be None, a literal value (int, bool, str, or bytes), or an enum value (reportInvalidTypeForm) literals_literalstring.py:43:23 - error: Type "Literal['two']" is not assignable to declared type "Literal['']"   "Literal['two']" is not assignable to type "Literal['']" (reportAssignmentType) -literals_literalstring.py:66:25 - error: Type "str" is not assignable to declared type "LiteralString" +literals_literalstring.py:65:25 - error: Type "str" is not assignable to declared type "LiteralString"   "str" is not assignable to "LiteralString" (reportAssignmentType) -literals_literalstring.py:74:25 - error: Type "Literal[3]" is not assignable to declared type "LiteralString" +literals_literalstring.py:73:25 - error: Type "Literal[3]" is not assignable to declared type "LiteralString"   "Literal[3]" is not assignable to "LiteralString" (reportAssignmentType) -literals_literalstring.py:75:25 - error: Type "Literal[b"test"]" is not assignable to declared type "LiteralString" +literals_literalstring.py:74:25 - error: Type "Literal[b"test"]" is not assignable to declared type "LiteralString"   "Literal[b"test"]" is not assignable to "LiteralString" (reportAssignmentType) -literals_literalstring.py:120:22 - error: Argument of type "str" cannot be assigned to parameter "s" of type "TLiteral@literal_identity" in function "literal_identity" +literals_literalstring.py:119:22 - error: Argument of type "str" cannot be assigned to parameter "s" of type "TLiteral@literal_identity" in function "literal_identity"   Type "str" is not assignable to type "LiteralString"     "str" is not assignable to "LiteralString" (reportArgumentType) -literals_literalstring.py:134:51 - error: Argument of type "str" cannot be assigned to parameter "value" of type "T@Container" in function "__init__" +literals_literalstring.py:133:51 - error: Argument of type "str" cannot be assigned to parameter "value" of type "T@Container" in function "__init__"   Type "str" is not assignable to type "LiteralString"     "str" is not assignable to "LiteralString" (reportArgumentType) -literals_literalstring.py:171:21 - error: Type "list[LiteralString]" is not assignable to declared type "list[str]" +literals_literalstring.py:170:21 - error: Type "list[LiteralString]" is not assignable to declared type "list[str]"   "list[LiteralString]" is not assignable to "list[str]"     Type parameter "_T@list" is invariant, but "LiteralString" is not the same as "str"     Consider switching from "list" to "Sequence" which is covariant (reportAssignmentType) diff --git a/conformance/results/zuban/literals_literalstring.toml b/conformance/results/zuban/literals_literalstring.toml index 8084711d..e29e362f 100644 --- a/conformance/results/zuban/literals_literalstring.toml +++ b/conformance/results/zuban/literals_literalstring.toml @@ -5,12 +5,12 @@ output = """ literals_literalstring.py:36: error: Parameter 2 of Literal[...] is invalid [valid-type] literals_literalstring.py:37: error: Parameter 1 of Literal[...] is invalid [valid-type] literals_literalstring.py:43: error: Incompatible types in assignment (expression has type "Literal['two']", variable has type "Literal['']") [assignment] -literals_literalstring.py:66: error: Incompatible types in assignment (expression has type "str", variable has type "LiteralString") [assignment] -literals_literalstring.py:74: error: Incompatible types in assignment (expression has type "Literal[3]", variable has type "LiteralString") [assignment] -literals_literalstring.py:75: error: Incompatible types in assignment (expression has type "Literal[b'test']", variable has type "LiteralString") [assignment] -literals_literalstring.py:120: error: Value of type variable "TLiteral" of "literal_identity" cannot be "str" [type-var] -literals_literalstring.py:134: error: Value of type variable "T" of "Container" cannot be "str" [type-var] -literals_literalstring.py:171: error: Incompatible types in assignment (expression has type "list[LiteralString]", variable has type "list[str]") [assignment] -literals_literalstring.py:171: note: "List" is invariant -- see https://mypy.readthedocs.io/en/stable/common_issues.html#variance -literals_literalstring.py:171: note: Consider using "Sequence" instead, which is covariant +literals_literalstring.py:65: error: Incompatible types in assignment (expression has type "str", variable has type "LiteralString") [assignment] +literals_literalstring.py:73: error: Incompatible types in assignment (expression has type "Literal[3]", variable has type "LiteralString") [assignment] +literals_literalstring.py:74: error: Incompatible types in assignment (expression has type "Literal[b'test']", variable has type "LiteralString") [assignment] +literals_literalstring.py:119: error: Value of type variable "TLiteral" of "literal_identity" cannot be "str" [type-var] +literals_literalstring.py:133: error: Value of type variable "T" of "Container" cannot be "str" [type-var] +literals_literalstring.py:170: error: Incompatible types in assignment (expression has type "list[LiteralString]", variable has type "list[str]") [assignment] +literals_literalstring.py:170: note: "List" is invariant -- see https://mypy.readthedocs.io/en/stable/common_issues.html#variance +literals_literalstring.py:170: note: Consider using "Sequence" instead, which is covariant """ diff --git a/conformance/tests/literals_literalstring.py b/conformance/tests/literals_literalstring.py index 99b51cdf..8ee6346d 100644 --- a/conformance/tests/literals_literalstring.py +++ b/conformance/tests/literals_literalstring.py @@ -43,14 +43,14 @@ def func1(a: Literal["one"], b: Literal["two"]): x2: Literal[""] = b # E -def func2(a: LiteralString, b: LiteralString): +def func2(a: LiteralString, b: LiteralString, non_literal: str): # > Addition: x + y is of type LiteralString if both x and y are compatible with LiteralString. assert_type(a + b, LiteralString) # > Joining: sep.join(xs) is of type LiteralString if sep’s type is # > compatible with LiteralString and xs’s type is compatible with Iterable[LiteralString]. assert_type(",".join((a, b)), LiteralString) - assert_type(",".join((a, str(b))), str) + assert_type(",".join((a, non_literal)), str) # > In-place addition: If s has type LiteralString and x has type compatible with # > LiteralString, then s += x preserves s’s type as LiteralString. @@ -62,10 +62,9 @@ def func2(a: LiteralString, b: LiteralString): # > s and the arguments have types compatible with LiteralString. assert_type(f"{a} {b}", LiteralString) - variable = 3 - x1: LiteralString = f"{a} {str(variable)}" # E + x1: LiteralString = f"{a} {non_literal}" # E - assert_type(a + str(1), str) + assert_type(a + non_literal, str) # > LiteralString is compatible with the type str x2: str = a