Skip to content

Commit c39cb87

Browse files
committed
Remove duplicate code.
1 parent 838e793 commit c39cb87

File tree

1 file changed

+10
-29
lines changed

1 file changed

+10
-29
lines changed

src/Xamarin.Android.Tools.Bytecode/Kotlin/KotlinMetadata.cs

Lines changed: 10 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -54,40 +54,21 @@ public KotlinClass AsClassMetadata ()
5454
if (Kind != KotlinMetadataKind.Class)
5555
return null;
5656

57-
var md = KotlinBitEncoding.DecodeBytes (Data1);
58-
59-
using (var ms = ToMemoryStream (md)) {
60-
61-
// The first element is the length of the string table
62-
var first = ms.ReadByte ();
63-
64-
if (first == -1)
65-
return null;
66-
67-
ms.Position = 0;
68-
69-
var size = KotlinBitEncoding.ReadRawVarint32 (ms);
70-
71-
using (var partial = new PartialStream (ms, ms.Position, size)) {
72-
73-
// Read the string table from the stream
74-
var string_table = Serializer.Deserialize<org.jetbrains.kotlin.metadata.jvm.StringTableTypes> (partial);
75-
var resolver = new JvmNameResolver (string_table, Data2.ToList ());
76-
77-
partial.MoveNext ();
78-
79-
// Read the metadata structure from the stream
80-
var metadata = Serializer.Deserialize<org.jetbrains.kotlin.metadata.jvm.Class> (partial);
81-
return KotlinClass.FromProtobuf (metadata, resolver);
82-
}
83-
}
57+
var data = ParseStream<org.jetbrains.kotlin.metadata.jvm.Class> ();
58+
return KotlinClass.FromProtobuf (data.Item1, data.Item2);
8459
}
8560

8661
public KotlinFile AsFileMetadata ()
8762
{
8863
if (Kind != KotlinMetadataKind.File)
8964
return null;
9065

66+
var data = ParseStream<org.jetbrains.kotlin.metadata.jvm.Package> ();
67+
return KotlinFile.FromProtobuf (data.Item1, data.Item2);
68+
}
69+
70+
Tuple<T, JvmNameResolver> ParseStream<T> ()
71+
{
9172
var md = KotlinBitEncoding.DecodeBytes (Data1);
9273

9374
using (var ms = ToMemoryStream (md)) {
@@ -111,8 +92,8 @@ public KotlinFile AsFileMetadata ()
11192
partial.MoveNext ();
11293

11394
// Read the metadata structure from the stream
114-
var metadata = Serializer.Deserialize<org.jetbrains.kotlin.metadata.jvm.Package> (partial);
115-
return KotlinFile.FromProtobuf (metadata, resolver);
95+
var metadata = Serializer.Deserialize<T> (partial);
96+
return Tuple.Create (metadata, resolver);
11697
}
11798
}
11899
}

0 commit comments

Comments
 (0)