Skip to content

Commit 4f2beeb

Browse files
committed
fix: property type mutableXXX
1 parent 41725a5 commit 4f2beeb

File tree

2 files changed

+16
-14
lines changed

2 files changed

+16
-14
lines changed

lib/common/utils.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import DNObjectiveCTypeConverter from '../objc/DNObjectiveCTypeConverter.js'
2+
13
String.prototype.capitalize = function () {
24
return this.charAt(0).toUpperCase() + this.slice(1).toLowerCase()
35
}
@@ -7,3 +9,10 @@ export function rawGenericType(type) {
79
var rawType = isGeneric ? type.substring(0, type.indexOf('<')) : type
810
return rawType
911
}
12+
13+
export function convertMutableTypeIfNeed(type) {
14+
var rawType = rawGenericType(type)
15+
var dartType = DNObjectiveCTypeConverter.SupportMutableTypesMap[rawType]
16+
var ret = dartType ? type.replace(rawType, dartType) : type
17+
return ret
18+
}

lib/objc/DNObjectiveCContext.js

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import DNObjectiveCTypeConverter from './DNObjectiveCTypeConverter.js'
2-
import { rawGenericType } from '../common/utils.js'
2+
import { rawGenericType, convertMutableTypeIfNeed } from '../common/utils.js'
33

44
export class DNContext {
55
constructor(internal) {
@@ -190,7 +190,7 @@ export class DNMethodContext extends DNContext {
190190
return this.constructorImpl()
191191
} else {
192192
var result = ' ' + this.availability.map((a) => a.parse()).join(' ') + '\n'
193-
result += ' ' + (this.isClassMethod ? 'static ' : '') + this.convertMutableTypeIfNeed(this.returnType) + ' ' + this.methodDeclaration() + this.methodArgs() + ' {\n'
193+
result += ' ' + (this.isClassMethod ? 'static ' : '') + convertMutableTypeIfNeed(this.returnType) + ' ' + this.methodDeclaration() + this.methodArgs() + ' {\n'
194194
result += this.preHandleMutableArgsIfNeed() + ' ' + this.methodImpl()
195195
result += ' }'
196196
return result
@@ -288,7 +288,7 @@ export class DNMethodContext extends DNContext {
288288
nullableArgs.push(element)
289289
} else {
290290
var argType = element.isOutParam ? 'NSObjectRef<' + element.type + '>' : element.type
291-
var arg = element.isBlock ? argType : this.convertMutableTypeIfNeed(argType) + ' ' + element.name
291+
var arg = element.isBlock ? argType : convertMutableTypeIfNeed(argType) + ' ' + element.name
292292
argList += arg + (index == this.args.length - 1 && nullableArgs.length == 0 ? '' : ', ')
293293
}
294294
})
@@ -297,7 +297,7 @@ export class DNMethodContext extends DNContext {
297297
argList += '{'
298298
nullableArgs.forEach((element, index) => {
299299
var argType = element.isOutParam ? 'NSObjectRef<' + element.type + '>' : element.type
300-
var arg = element.isBlock ? argType : this.convertMutableTypeIfNeed(argType) + ' ' + element.name
300+
var arg = element.isBlock ? argType : convertMutableTypeIfNeed(argType) + ' ' + element.name
301301
argList += arg + (index == nullableArgs.length - 1 ? '' : ', ')
302302
})
303303
argList += '}'
@@ -319,13 +319,6 @@ export class DNMethodContext extends DNContext {
319319
return result
320320
}
321321

322-
convertMutableTypeIfNeed(type) {
323-
var rawType = rawGenericType(type)
324-
var dartType = DNObjectiveCTypeConverter.SupportMutableTypesMap[rawType]
325-
var ret = dartType ? type.replace(rawType, dartType) : type
326-
return ret
327-
}
328-
329322
ocMethodName() {
330323
var funcName = ''
331324
this.args.forEach((_element, index) => {
@@ -378,11 +371,11 @@ export class DNPropertyContext extends DNContext {
378371
}
379372
var annotation = ' ' + this.availability.map((a) => a.parse()).join(' ') + '\n'
380373
var isClassPrefix = (this.isClassProperty ? ' Class(\'' + this.parent.name + '\').' : ' ')
381-
382-
var get = annotation + ' ' + this.type + ' get ' + this.name + ' {\n' +
374+
let convertedType = convertMutableTypeIfNeed(this.type)
375+
var get = annotation + ' ' + convertedType + ' get ' + this.name + ' {\n' +
383376
this.handleGetter(isClassPrefix) + '\n}'
384377
if (!this.isReadOnly) {
385-
var set = annotation + ' ' + 'set ' + this.name + '(' + this.type + ' ' + this.name + ')' +
378+
var set = annotation + ' ' + 'set ' + this.name + '(' + convertedType + ' ' + this.name + ')' +
386379
' =>' + isClassPrefix + 'perform(SEL(\'set' + this.name.replace(/^\w/, c => c.toUpperCase()) + ':\'), args: [' + this.name + ']);'
387380
}
388381
return get + '\n' + set

0 commit comments

Comments
 (0)