Skip to content

consider revert #6755 because maybe Char + String is more efficient. #11025

Closed
@xuwei-k

Description

@xuwei-k

build.sbt

resolvers += "scala-pr" at "https://scala-ci.typesafe.com/artifactory/scala-integration/"

scalaVersion := "2.13.0-pre-4d39d4f"

scalacOptions += "-deprecation"

A.scala

class A {
  def x = 'a' + "b"
  def y = 'c'.toString + "d"
}

sbt compile log

A.scala:2:15: method + in class Char is deprecated (since 2.13.0): Adding a number and a String is deprecated. Convert the number to a String with `toString` first to call +
[warn]   def x = 'a' + "b"
[warn]               ^
[warn] one warning found

javap -v target/scala-2.13.0-pre-4d39d4f/classes/A.class

  public java.lang.String x();
    descriptor: ()Ljava/lang/String;
    flags: ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
         0: new           #12                 // class java/lang/StringBuilder
         3: dup
         4: ldc           #13                 // int 12
         6: invokespecial #17                 // Method java/lang/StringBuilder."<init>":(I)V
         9: bipush        97
        11: invokevirtual #21                 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
        14: ldc           #23                 // String b
        16: invokevirtual #26                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        19: invokevirtual #29                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
        22: areturn
      LineNumberTable:
        line 2: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      23     0  this   LA;

  public java.lang.String y();
    descriptor: ()Ljava/lang/String;
    flags: ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
         0: new           #12                 // class java/lang/StringBuilder
         3: dup
         4: ldc           #33                 // int 1
         6: invokespecial #17                 // Method java/lang/StringBuilder."<init>":(I)V
         9: bipush        99
        11: invokestatic  #39                 // Method scala/runtime/BoxesRunTime.boxToCharacter:(C)Ljava/lang/Character;
        14: invokevirtual #40                 // Method java/lang/Object.toString:()Ljava/lang/String;
        17: invokevirtual #26                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        20: ldc           #42                 // String d
        22: invokevirtual #26                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        25: invokevirtual #29                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
        28: areturn
      LineNumberTable:
        line 3: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      29     0  this   LA;

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions