@@ -21,44 +21,59 @@ func createData(
21
21
if ! ok {
22
22
panic ("Missing type" )
23
23
}
24
+ // if interfaceConfig.IdlInterface.Name != interfaceConfig.TypeName {
25
+ // panic(
26
+ // fmt.Sprintf(
27
+ // "Type mismatch, %s = %s",
28
+ // interfaceConfig.IdlInterface.Name,
29
+ // interfaceConfig.TypeName,
30
+ // ),
31
+ // )
32
+ // }
24
33
idlInterface := idlName .IdlInterface
25
34
wrappedTypeName := idlInterface .Name
35
+ if idlInterface .Name != interfaceConfig .TypeName {
36
+ panic (fmt .Sprintf ("createData error: %s = %s" , idlInterface .Name , interfaceConfig .TypeName ))
37
+ }
26
38
return ESConstructorData {
27
39
Spec : interfaceConfig ,
28
40
IdlInterfaceName : wrappedTypeName ,
29
41
RunCustomCode : interfaceConfig .RunCustomCode ,
30
42
Inheritance : idlInterface .Inheritance ,
31
43
IdlInterface : idlInterface ,
32
- Constructor : CreateConstructor (interfaceConfig , idlName ),
33
- Operations : CreateInstanceMethods (interfaceConfig , idlName ),
34
- Attributes : CreateAttributes (interfaceConfig , idlName ),
44
+ Constructor : CreateConstructor (idlInterface , interfaceConfig , idlName ),
45
+ Operations : CreateInstanceMethods (idlInterface , interfaceConfig , idlName ),
46
+ Attributes : CreateAttributes (idlInterface , interfaceConfig , idlName ),
35
47
}
36
48
}
37
49
38
50
func CreateConstructor (
51
+ idlInterface idl.Interface ,
39
52
interfaceConfig * configuration.IdlInterfaceConfiguration ,
40
53
idlName idl.TypeSpec ) * ESOperation {
41
54
if c , ok := idlName .Constructor (); ok {
42
55
fmt .Printf ("Create constructor %s '%s'\n " , interfaceConfig .TypeName , c .Name )
43
56
c .Name = "constructor"
44
- result := createOperation (interfaceConfig , c )
57
+ result := createOperation (idlInterface , interfaceConfig , c )
45
58
return & result
46
59
} else {
47
60
return nil
48
61
}
49
62
}
50
63
51
64
func CreateInstanceMethods (
65
+ idlInterface idl.Interface ,
52
66
interfaceConfig * configuration.IdlInterfaceConfiguration ,
53
67
idlName idl.TypeSpec ) (result []ESOperation ) {
54
68
for instanceMethod := range idlName .InstanceMethods () {
55
- op := createOperation (interfaceConfig , instanceMethod )
69
+ op := createOperation (idlInterface , interfaceConfig , instanceMethod )
56
70
result = append (result , op )
57
71
}
58
72
return
59
73
}
60
74
61
75
func CreateAttributes (
76
+ idlInterface idl.Interface ,
62
77
interfaceConfig * configuration.IdlInterfaceConfiguration ,
63
78
idlName idl.TypeSpec ,
64
79
) (res []ESAttribute ) {
@@ -71,16 +86,15 @@ func CreateAttributes(
71
86
getter * ESOperation
72
87
setter * ESOperation
73
88
)
74
- // r := attribute.AttributeType()
75
- // rtnType := r.TypeName
76
89
getter = & ESOperation {
77
90
Name : attribute .Name ,
78
91
NotImplemented : methodCustomization .NotImplemented ,
79
92
CustomImplementation : methodCustomization .CustomImplementation ,
80
- RetType : idl.RetType {
93
+ LegacyRetType : idl.RetType {
81
94
TypeName : attribute .Type .Name ,
82
95
Nullable : attribute .Type .Nullable ,
83
96
},
97
+ RetType : attribute .Type ,
84
98
MethodCustomization : methodCustomization ,
85
99
}
86
100
if ! attribute .Readonly {
@@ -91,7 +105,8 @@ func CreateAttributes(
91
105
setter .NotImplemented = setter .NotImplemented || methodCustomization .NotImplemented
92
106
setter .CustomImplementation = setter .CustomImplementation ||
93
107
methodCustomization .CustomImplementation
94
- setter .RetType = idl .NewRetTypeUndefined ()
108
+ setter .LegacyRetType = idl .NewRetTypeUndefined ()
109
+ setter .RetType = IdlTypeUndefined
95
110
setter .Arguments = []ESOperationArgument {{
96
111
Name : "val" ,
97
112
Type : IdlNameToGoName (attribute .Type .Name ),
@@ -109,19 +124,22 @@ func CreateAttributes(
109
124
}
110
125
111
126
func createOperation (
127
+ idlInterface idl.Interface ,
112
128
typeSpec * configuration.IdlInterfaceConfiguration ,
113
129
member idl.MemberSpec ,
114
130
) ESOperation {
115
131
specRules := customrules .GetSpecRules (typeSpec .DomSpec .Name )
116
132
intfRules := specRules [typeSpec .TypeName ]
117
133
opRules := intfRules .Operations [member .Name ]
118
-
119
134
methodCustomization := typeSpec .GetMethodCustomization (member .Name )
135
+ idlOperation , _ := idlInterface .GetOperation (member .Name )
136
+
120
137
op := ESOperation {
121
138
Name : member .Name ,
122
139
NotImplemented : methodCustomization .NotImplemented ,
123
140
CustomImplementation : methodCustomization .CustomImplementation ,
124
- RetType : member .ReturnType (),
141
+ LegacyRetType : member .ReturnType (),
142
+ RetType : idlOperation .ReturnType ,
125
143
MethodCustomization : methodCustomization ,
126
144
HasError : opRules .HasError ,
127
145
Arguments : []ESOperationArgument {},
0 commit comments