Problems reported:

parser/coverage/string1:6:10: Expected ';' after this.
  return "æble
         ^^^^^

parser/coverage/string1:10:12: Expected ';' after this.
  return "$1"
           ^^

parser/coverage/string1:14:10: Expected ';' after this.
  return r"æble$"
         ^^^^^^^^

parser/coverage/string1:18:10: Expected ';' after this.
  return r"æble$
         ^^^^^^^

parser/coverage/string1:23:10: Expected ';' after this.
  return r"æble
         ^^^^^^

parser/coverage/string1:6:10: String starting with " must end with ".
  return "æble
         ^^^^^

parser/coverage/string1:10:12: A '$' has special meaning inside a string, and must be followed by an identifier or an expression in curly braces ({}).
  return "$1"
           ^

parser/coverage/string1:18:10: String starting with r" must end with ".
  return r"æble$
         ^^^^^^^

parser/coverage/string1:23:10: String starting with r" must end with ".
  return r"æble
         ^^^^^^

parser/coverage/string1:21:16: Can't find '}' to match '{'.
String corge() {
               ^

beginCompilationUnit(String)
  beginMetadataStar(String)
  endMetadataStar(0)
  beginTopLevelMember(String)
    beginTopLevelMethod(UnmatchedToken({), null, null)
      handleIdentifier(String, typeReference)
      handleNoTypeArguments(foo)
      handleType(String, null)
      handleIdentifier(foo, topLevelFunctionDeclaration)
      handleNoTypeVariables(()
      beginFormalParameters((, MemberKind.TopLevelMethod)
        beginMetadataStar(dynamic)
        endMetadataStar(0)
        beginFormalParameter(dynamic, MemberKind.TopLevelMethod, null, null, null)
          handleIdentifier(dynamic, typeReference)
          handleNoTypeArguments(bar)
          handleType(dynamic, null)
          handleIdentifier(bar, formalParameterDeclaration)
          handleFormalParameterWithoutValue())
        endFormalParameter(null, null, null, bar, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
      handleAsyncModifier(null, null)
      beginBlockFunctionBody({)
        beginReturnStatement(return)
          beginLiteralString("æble )
            handleIdentifier(bar, expression)
            handleNoTypeArguments(")
            handleNoArguments(")
            handleSend(bar, bar)
            handleInterpolationExpression($, null)
            handleStringPart(")
          endLiteralString(1, ;)
        endReturnStatement(true, return, ;)
      endBlockFunctionBody(1, {, })
    endTopLevelMethod(String, null, })
  endTopLevelDeclaration(})
  beginMetadataStar(String)
  endMetadataStar(0)
  beginTopLevelMember(String)
    beginTopLevelMethod(}, null, null)
      handleIdentifier(String, typeReference)
      handleNoTypeArguments(bar)
      handleType(String, null)
      handleIdentifier(bar, topLevelFunctionDeclaration)
      handleNoTypeVariables(()
      beginFormalParameters((, MemberKind.TopLevelMethod)
      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
      handleAsyncModifier(null, null)
      beginBlockFunctionBody({)
        beginReturnStatement(return)
          beginLiteralString("æble")
          endLiteralString(0, })
          handleRecoverableError(Message[Template(ExpectedAfterButGot), Expected ';' after this., null, {string: ;}], "æble", "æble")
        endReturnStatement(true, return, ;)
      endBlockFunctionBody(1, {, })
    endTopLevelMethod(String, null, })
  endTopLevelDeclaration(})
  beginMetadataStar(String)
  endMetadataStar(0)
  beginTopLevelMember(String)
    beginTopLevelMethod(}, null, null)
      handleIdentifier(String, typeReference)
      handleNoTypeArguments(baz)
      handleType(String, null)
      handleIdentifier(baz, topLevelFunctionDeclaration)
      handleNoTypeVariables(()
      beginFormalParameters((, MemberKind.TopLevelMethod)
      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
      handleAsyncModifier(null, null)
      beginBlockFunctionBody({)
        beginReturnStatement(return)
          beginLiteralString(")
            handleIdentifier(, expression)
            handleNoTypeArguments(1")
            handleNoArguments(1")
            handleSend(, )
            handleInterpolationExpression($, null)
            handleStringPart(1")
          endLiteralString(1, })
          handleRecoverableError(Message[Template(ExpectedAfterButGot), Expected ';' after this., null, {string: ;}], 1", 1")
        endReturnStatement(true, return, ;)
      endBlockFunctionBody(1, {, })
    endTopLevelMethod(String, null, })
  endTopLevelDeclaration(})
  beginMetadataStar(String)
  endMetadataStar(0)
  beginTopLevelMember(String)
    beginTopLevelMethod(}, null, null)
      handleIdentifier(String, typeReference)
      handleNoTypeArguments(qux)
      handleType(String, null)
      handleIdentifier(qux, topLevelFunctionDeclaration)
      handleNoTypeVariables(()
      beginFormalParameters((, MemberKind.TopLevelMethod)
      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
      handleAsyncModifier(null, null)
      beginBlockFunctionBody({)
        beginReturnStatement(return)
          beginLiteralString(r"æble$")
          endLiteralString(0, })
          handleRecoverableError(Message[Template(ExpectedAfterButGot), Expected ';' after this., null, {string: ;}], r"æble$", r"æble$")
        endReturnStatement(true, return, ;)
      endBlockFunctionBody(1, {, })
    endTopLevelMethod(String, null, })
  endTopLevelDeclaration(})
  beginMetadataStar(String)
  endMetadataStar(0)
  beginTopLevelMember(String)
    beginTopLevelMethod(}, null, null)
      handleIdentifier(String, typeReference)
      handleNoTypeArguments(quux)
      handleType(String, null)
      handleIdentifier(quux, topLevelFunctionDeclaration)
      handleNoTypeVariables(()
      beginFormalParameters((, MemberKind.TopLevelMethod)
      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
      handleAsyncModifier(null, null)
      beginBlockFunctionBody({)
        beginReturnStatement(return)
          beginLiteralString(r"æble$")
          endLiteralString(0, })
          handleRecoverableError(Message[Template(ExpectedAfterButGot), Expected ';' after this., null, {string: ;}], r"æble$", r"æble$")
        endReturnStatement(true, return, ;)
      endBlockFunctionBody(1, {, })
    endTopLevelMethod(String, null, })
  endTopLevelDeclaration(})
  beginMetadataStar(String)
  endMetadataStar(0)
  beginTopLevelMember(String)
    beginTopLevelMethod(}, null, null)
      handleIdentifier(String, typeReference)
      handleNoTypeArguments(corge)
      handleType(String, null)
      handleIdentifier(corge, topLevelFunctionDeclaration)
      handleNoTypeVariables(()
      beginFormalParameters((, MemberKind.TopLevelMethod)
      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
      handleAsyncModifier(null, null)
      beginBlockFunctionBody({)
        beginReturnStatement(return)
          beginLiteralString(r"æble")
          endLiteralString(0, })
          handleRecoverableError(Message[Template(ExpectedAfterButGot), Expected ';' after this., null, {string: ;}], r"æble", r"æble")
        endReturnStatement(true, return, ;)
      endBlockFunctionBody(1, {, })
    endTopLevelMethod(String, null, })
  endTopLevelDeclaration(})
  handleErrorToken(UnterminatedString("))
  handleRecoverableError(Message[Template(UnterminatedString), String starting with " must end with "., null, {string: ", string2: "}], UnterminatedString("), UnterminatedString("))
  handleErrorToken(UnterminatedToken(UnexpectedDollarInString))
  handleRecoverableError(UnexpectedDollarInString, UnterminatedToken(UnexpectedDollarInString), UnterminatedToken(UnexpectedDollarInString))
  handleErrorToken(UnterminatedString(r"))
  handleRecoverableError(Message[Template(UnterminatedString), String starting with r" must end with "., null, {string: r", string2: "}], UnterminatedString(r"), UnterminatedString(r"))
  handleErrorToken(UnterminatedString(r"))
  handleRecoverableError(Message[Template(UnterminatedString), String starting with r" must end with "., null, {string: r", string2: "}], UnterminatedString(r"), UnterminatedString(r"))
  handleErrorToken(UnmatchedToken({))
  handleRecoverableError(Message[Template(UnmatchedToken), Can't find '}' to match '{'., null, {string: }, lexeme: {}], UnmatchedToken({), UnmatchedToken({))
endCompilationUnit(6, )
