@@ -81,36 +81,33 @@ internal override void Resolve(ClassFile classFile, string[] utf8_cp, ClassFileP
81
81
#if ! IMPORTER
82
82
if ( classFile . MajorVersion < 49 && ( options & ClassFileParseOptions . RelaxedClassNameValidation ) == 0 )
83
83
{
84
- char prev = name [ 0 ] ;
85
- if ( Char . IsLetter ( prev ) || prev == '$' || prev == '_' || prev == '[' || prev == '/' )
84
+ var prev = name [ 0 ] ;
85
+ if ( char . IsLetter ( prev ) || prev == '$' || prev == '_' || prev == '[' || prev == '/' )
86
86
{
87
87
int skip = 1 ;
88
88
int end = name . Length ;
89
89
if ( prev == '[' )
90
90
{
91
91
if ( ! IsValidFieldSig ( name ) )
92
- {
93
- goto barf ;
94
- }
92
+ throw new ClassFormatError ( "Invalid class name \" {0}\" " , name ) ;
93
+
95
94
while ( name [ skip ] == '[' )
96
- {
97
95
skip ++ ;
98
- }
96
+
99
97
if ( name . EndsWith ( ";" ) )
100
- {
101
98
end -- ;
102
- }
103
99
}
100
+
104
101
for ( int i = skip ; i < end ; i ++ )
105
102
{
106
- char c = name [ i ] ;
107
- if ( ! Char . IsLetterOrDigit ( c ) && c != '$' && c != '_' && ( c != '/' || prev == '/' ) )
108
- {
109
- goto barf ;
110
- }
103
+ var c = name [ i ] ;
104
+ if ( ! char . IsLetterOrDigit ( c ) && c != '$' && c != '_' && ( c != '/' || prev == '/' ) )
105
+ throw new ClassFormatError ( "Invalid class name \" {0}\" " , name ) ;
106
+
111
107
prev = c ;
112
108
}
113
- name = String . Intern ( name . Replace ( '/' , '.' ) ) ;
109
+
110
+ name = string . Intern ( name . Replace ( '/' , '.' ) ) ;
114
111
return ;
115
112
}
116
113
}
@@ -123,34 +120,26 @@ internal override void Resolve(ClassFile classFile, string[] utf8_cp, ClassFileP
123
120
if ( name [ 0 ] == '[' )
124
121
{
125
122
if ( ! IsValidFieldSig ( name ) )
126
- {
127
- goto barf ;
128
- }
123
+ throw new ClassFormatError ( "Invalid class name \" {0}\" " , name ) ;
124
+
129
125
// the semicolon is only allowed at the end and IsValidFieldSig enforces this,
130
126
// but since invalidJava15Characters contains the semicolon, we decrement end
131
127
// to make the following check against invalidJava15Characters ignore the
132
128
// trailing semicolon.
133
129
if ( name [ end - 1 ] == ';' )
134
- {
135
130
end -- ;
136
- }
131
+
137
132
while ( name [ start ] == '[' )
138
- {
139
133
start ++ ;
140
- }
141
134
}
142
135
143
136
if ( name . IndexOfAny ( invalidJava15Characters , start , end - start ) >= 0 )
144
- {
145
- goto barf ;
146
- }
137
+ throw new ClassFormatError ( "Invalid class name \" {0}\" " , name ) ;
147
138
148
139
name = string . Intern ( name . Replace ( '/' , '.' ) ) ;
149
140
return ;
150
141
}
151
142
}
152
- barf :
153
- throw new ClassFormatError ( "Invalid class name \" {0}\" " , name ) ;
154
143
}
155
144
156
145
internal override void MarkLinkRequired ( )
@@ -168,7 +157,8 @@ internal override void Link(RuntimeJavaType thisType, LoadMode mode)
168
157
if ( typeWrapper == Context . VerifierJavaTypeFactory . Null )
169
158
{
170
159
var tw = thisType . ClassLoader . LoadClass ( name , mode | LoadMode . WarnClassNotFound ) ;
171
- #if ! IMPORTER && ! FIRST_PASS
160
+
161
+ #if IMPORTER == false && FIRST_PASS == false
172
162
if ( ! tw . IsUnloadable )
173
163
{
174
164
try
@@ -181,17 +171,12 @@ internal override void Link(RuntimeJavaType thisType, LoadMode mode)
181
171
}
182
172
}
183
173
#endif
174
+
184
175
typeWrapper = tw ;
185
176
}
186
177
}
187
178
188
- internal string Name
189
- {
190
- get
191
- {
192
- return name ;
193
- }
194
- }
179
+ internal string Name => name ;
195
180
196
181
internal RuntimeJavaType GetClassType ( )
197
182
{
0 commit comments