Comments (2)
Thank you for reporting! Right, we should count as 1 for the unpaired surrogate point.
Unpaired surrogates within the text range given by index and codePointOffset count as one code point each.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#offsetByCodePoints(int,int)
❯ cat test.scala
@main def main = {
println("\uD800".offsetByCodePoints(0, 1))
}
❯ scala-cli test.scala
Compiling project (Scala 3.3.0, JVM)
Compiled project (Scala 3.3.0, JVM)
1
❯ scala-cli test.scala --native
Compiling project (Scala 3.3.0, Scala Native)
Compiled project (Scala 3.3.0, Scala Native)
[info] Linking (756 ms)
[info] Discovered 680 classes and 3771 methods
[info] Optimizing (debug mode) (889 ms)
[info] Generating intermediate code (856 ms)
[info] Produced 8 files
[info] Compiling to native code (1649 ms)
[info] Total (4257 ms)
java.lang.ArrayIndexOutOfBoundsException: 1
at java.lang.StackTrace$.currentStackTrace$$anonfun$1(Unknown Source)
at java.lang.StackTrace$$$Lambda$2.applyVoid(Unknown Source)
at scala.runtime.function.JProcedure1.apply(Unknown Source)
at scala.scalanative.unsafe.Zone$.apply(Unknown Source)
at java.lang.StackTrace$.currentStackTrace(Unknown Source)
at java.lang.Throwable.fillInStackTrace(Unknown Source)
at scala.scalanative.runtime.package$.throwOutOfBounds(Unknown Source)
at java.lang.Character$.offsetByCodePoints(Unknown Source)
at java.lang.String.offsetByCodePoints(Unknown Source)
at test$package$.main(Unknown Source)
at main.main(Unknown Source)
at <none>.main(Unknown Source)
from scala-native.
It seems like we have an error when the part of string ends with the unpaired surrogate
scala-native/javalib/src/main/scala/java/lang/Character.scala
Lines 379 to 383 in 3dd595b
❯ cat test.scala
// no problem
@main def main = {
println("\uD800a".offsetByCodePoints(0, 1))
}
❯ scala-cli test.scala --native
1
and low-surrogate doesn't have the problem
@main def main = {
println("\uDC00".offsetByCodePoints(0, 1))
}
❯ scala-cli test.scala --native
1
from scala-native.
Related Issues (20)
- (playdate support) delimcc.c is compiled even if Continuations isn't used HOT 4
- Explore the possibility to emit compiler warnings for missing javalib classes HOT 1
- javalib Files#walkFileTree method has mutiple opportunities for improvement
- javalib Files#list result stream is not lazy on non-Windows
- posixlib dirent.scala is missing the declaration of POSIX readdir() HOT 1
- Static library can't use exceptions internally with GNU C++ toolchain HOT 5
- javalib Files#list result stream is not lazy on Windows
- javalib Files#list result stream is not lazy on Windows HOT 1
- javalib Files.move does not follow JVM practice when target is a directory with contents. HOT 1
- Hide/deal with posix.sys.stat as it's not binary compatible with POSIX standard HOT 4
- javalib Files#walk FileSystemLoop detection is probably wrong/broken. HOT 1
- Please take over Scala Native java.util.logging port HOT 3
- Implementations of javalib `fileKey` has at least two defects. HOT 2
- Windows javalib fileKey appears to always be NULL HOT 2
- Inline assembly support
- javalib: `java.nio.file.Files.copy(Path, Path)` should handle symbolic links
- javalib `Files.copy()` methods should use bulk read & write methods. HOT 1
- delimcc/setjmp_amd32 compilation defect HOT 6
- javalib Files#walk FileSystemLoop detection has at least two defects HOT 1
- Add missing java.net.HttpCookie HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from scala-native.