Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
97c68805
K
kotlin
项目概览
硅谷海盗
/
kotlin
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kotlin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
97c68805
编写于
3月 27, 2020
作者:
A
Abduqodiri Qurbonzoda
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Compare floating point values asList elements in total order #KT-28753
上级
ba5e643c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
46 addition
and
16 deletion
+46
-16
libraries/stdlib/jvm/src/generated/_ArraysJvm.kt
libraries/stdlib/jvm/src/generated/_ArraysJvm.kt
+6
-6
libraries/stdlib/test/collections/ArraysTest.kt
libraries/stdlib/test/collections/ArraysTest.kt
+20
-0
libraries/tools/kotlin-stdlib-gen/src/templates/Arrays.kt
libraries/tools/kotlin-stdlib-gen/src/templates/Arrays.kt
+20
-10
未找到文件。
libraries/stdlib/jvm/src/generated/_ArraysJvm.kt
浏览文件 @
97c68805
...
...
@@ -192,10 +192,10 @@ public actual fun FloatArray.asList(): List<Float> {
return
object
:
AbstractList
<
Float
>(),
RandomAccess
{
override
val
size
:
Int
get
()
=
this
@asList
.
size
override
fun
isEmpty
():
Boolean
=
this
@asList
.
isEmpty
()
override
fun
contains
(
element
:
Float
):
Boolean
=
this
@asList
.
contains
(
element
)
override
fun
contains
(
element
:
Float
):
Boolean
=
this
@asList
.
any
{
it
.
toBits
()
==
element
.
toBits
()
}
override
fun
get
(
index
:
Int
):
Float
=
this
@asList
[
index
]
override
fun
indexOf
(
element
:
Float
):
Int
=
this
@asList
.
indexOf
(
element
)
override
fun
lastIndexOf
(
element
:
Float
):
Int
=
this
@asList
.
lastIndexOf
(
element
)
override
fun
indexOf
(
element
:
Float
):
Int
=
this
@asList
.
indexOf
First
{
it
.
toBits
()
==
element
.
toBits
()
}
override
fun
lastIndexOf
(
element
:
Float
):
Int
=
this
@asList
.
indexOfLast
{
it
.
toBits
()
==
element
.
toBits
()
}
}
}
...
...
@@ -206,10 +206,10 @@ public actual fun DoubleArray.asList(): List<Double> {
return
object
:
AbstractList
<
Double
>(),
RandomAccess
{
override
val
size
:
Int
get
()
=
this
@asList
.
size
override
fun
isEmpty
():
Boolean
=
this
@asList
.
isEmpty
()
override
fun
contains
(
element
:
Double
):
Boolean
=
this
@asList
.
contains
(
element
)
override
fun
contains
(
element
:
Double
):
Boolean
=
this
@asList
.
any
{
it
.
toBits
()
==
element
.
toBits
()
}
override
fun
get
(
index
:
Int
):
Double
=
this
@asList
[
index
]
override
fun
indexOf
(
element
:
Double
):
Int
=
this
@asList
.
indexOf
(
element
)
override
fun
lastIndexOf
(
element
:
Double
):
Int
=
this
@asList
.
lastIndexOf
(
element
)
override
fun
indexOf
(
element
:
Double
):
Int
=
this
@asList
.
indexOf
First
{
it
.
toBits
()
==
element
.
toBits
()
}
override
fun
lastIndexOf
(
element
:
Double
):
Int
=
this
@asList
.
indexOfLast
{
it
.
toBits
()
==
element
.
toBits
()
}
}
}
...
...
libraries/stdlib/test/collections/ArraysTest.kt
浏览文件 @
97c68805
...
...
@@ -824,6 +824,26 @@ class ArraysTest {
assertEquals
(
10
,
intsAsList
[
1
],
"Should reflect changes in original array"
)
}
@Test
fun
asListInFloatingPrimitiveArrays
()
{
fun
<
T
>
testTotalOrder
(
expected
:
List
<
T
>,
actual
:
List
<
T
>,
element
:
T
)
=
compare
(
expected
,
actual
)
{
propertyEquals
{
contains
(
element
)
}
propertyEquals
{
indexOf
(
element
)
}
propertyEquals
{
lastIndexOf
(
element
)
}
}
testTotalOrder
(
listOf
(
Float
.
NaN
),
floatArrayOf
(
Float
.
NaN
).
asList
(),
Float
.
NaN
)
testTotalOrder
(
listOf
(-
0.0f
),
floatArrayOf
(-
0.0f
).
asList
(),
-
0.0f
)
testTotalOrder
(
listOf
(-
0.0f
),
floatArrayOf
(-
0.0f
).
asList
(),
0.0f
)
testTotalOrder
(
listOf
(
0.0f
),
floatArrayOf
(
0.0f
).
asList
(),
0.0f
)
testTotalOrder
(
listOf
(
0.0f
),
floatArrayOf
(
0.0f
).
asList
(),
-
0.0f
)
testTotalOrder
(
listOf
(
Double
.
NaN
),
doubleArrayOf
(
Double
.
NaN
).
asList
(),
Double
.
NaN
)
testTotalOrder
(
listOf
(-
0.0
),
doubleArrayOf
(-
0.0
).
asList
(),
-
0.0
)
testTotalOrder
(
listOf
(-
0.0
),
doubleArrayOf
(-
0.0
).
asList
(),
0.0
)
testTotalOrder
(
listOf
(
0.0
),
doubleArrayOf
(
0.0
).
asList
(),
0.0
)
testTotalOrder
(
listOf
(
0.0
),
doubleArrayOf
(
0.0
).
asList
(),
-
0.0
)
}
@Test
fun
toPrimitiveArray
()
{
val
genericArray
:
Array
<
Int
>
=
arrayOf
(
1
,
2
,
3
)
val
primitiveArray
:
IntArray
=
genericArray
.
toIntArray
()
...
...
libraries/tools/kotlin-stdlib-gen/src/templates/Arrays.kt
浏览文件 @
97c68805
...
...
@@ -1467,16 +1467,26 @@ object ArrayOps : TemplateGroupBase() {
body
{
"""return ArrayList<T>(this.unsafeCast<Array<Any?>>())"""
}
}
val
objectLiteralImpl
=
"""
return object : AbstractList<T>(), RandomAccess {
override val size: Int get() = this@asList.size
override fun isEmpty(): Boolean = this@asList.isEmpty()
override fun contains(element: T): Boolean = this@asList.contains(element)
override fun get(index: Int): T = this@asList[index]
override fun indexOf(element: T): Int = this@asList.indexOf(element)
override fun lastIndexOf(element: T): Int = this@asList.lastIndexOf(element)
}
"""
val
objectLiteralImpl
=
if
(
primitive
in
PrimitiveType
.
floatingPointPrimitives
)
"""
return object : AbstractList<T>(), RandomAccess {
override val size: Int get() = this@asList.size
override fun isEmpty(): Boolean = this@asList.isEmpty()
override fun contains(element: T): Boolean = this@asList.any { it.toBits() == element.toBits() }
override fun get(index: Int): T = this@asList[index]
override fun indexOf(element: T): Int = this@asList.indexOfFirst { it.toBits() == element.toBits() }
override fun lastIndexOf(element: T): Int = this@asList.indexOfLast { it.toBits() == element.toBits() }
}
"""
else
"""
return object : AbstractList<T>(), RandomAccess {
override val size: Int get() = this@asList.size
override fun isEmpty(): Boolean = this@asList.isEmpty()
override fun contains(element: T): Boolean = this@asList.contains(element)
override fun get(index: Int): T = this@asList[index]
override fun indexOf(element: T): Int = this@asList.indexOf(element)
override fun lastIndexOf(element: T): Int = this@asList.lastIndexOf(element)
}
"""
specialFor
(
ArraysOfPrimitives
,
ArraysOfUnsigned
)
{
on
(
Platform
.
JVM
)
{
body
{
objectLiteralImpl
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录