OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package translator | 5 package translator |
6 | 6 |
7 import ( | 7 import ( |
8 "fmt" | 8 "fmt" |
9 "path/filepath" | |
10 | 9 |
11 "mojom/generated/mojom_types" | 10 "mojom/generated/mojom_types" |
12 ) | 11 ) |
13 | 12 |
14 func (t *translator) translateType(mojomType mojom_types.Type) (goType string) { | 13 func (t *translator) translateType(mojomType mojom_types.Type) (goType string) { |
15 switch m := mojomType.(type) { | 14 switch m := mojomType.(type) { |
16 default: | 15 default: |
17 panic("Not implemented yet!") | 16 panic("Not implemented yet!") |
18 case *mojom_types.TypeSimpleType: | 17 case *mojom_types.TypeSimpleType: |
19 goType = t.translateSimpleType(m.Value) | 18 goType = t.translateSimpleType(m.Value) |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 if typeRef.IsInterfaceRequest { | 124 if typeRef.IsInterfaceRequest { |
126 typeName = fmt.Sprintf("%s_Request", typeName) | 125 typeName = fmt.Sprintf("%s_Request", typeName) |
127 } else { | 126 } else { |
128 typeName = fmt.Sprintf("%s_Pointer", typeName) | 127 typeName = fmt.Sprintf("%s_Pointer", typeName) |
129 } | 128 } |
130 } | 129 } |
131 | 130 |
132 srcFileInfo := userDefinedTypeDeclData(userDefinedType).SourceFileInfo | 131 srcFileInfo := userDefinedTypeDeclData(userDefinedType).SourceFileInfo |
133 if srcFileInfo != nil && srcFileInfo.FileName != t.currentFileName { | 132 if srcFileInfo != nil && srcFileInfo.FileName != t.currentFileName { |
134 pkgName := fileNameToPackageName(srcFileInfo.FileName) | 133 pkgName := fileNameToPackageName(srcFileInfo.FileName) |
135 » » pkgPath, err := filepath.Rel(t.Config.SrcRootPath(), srcFileInfo
.FileName) | 134 » » t.importMojomFile(srcFileInfo.FileName) |
136 » » if err != nil { | |
137 » » » panic(err.Error()) | |
138 » » } | |
139 » » pkgPath = pkgPath[:len(pkgPath)-len(filepath.Ext(pkgPath))] | |
140 » » t.imports[pkgName] = pkgPath | |
141 typeName = fmt.Sprintf("%s.%s", pkgName, typeName) | 135 typeName = fmt.Sprintf("%s.%s", pkgName, typeName) |
142 } | 136 } |
143 | 137 |
144 if _, ok := userDefinedType.(*mojom_types.UserDefinedTypeUnionType); !ok
&& typeRef.Nullable { | 138 if _, ok := userDefinedType.(*mojom_types.UserDefinedTypeUnionType); !ok
&& typeRef.Nullable { |
145 typeName = "*" + typeName | 139 typeName = "*" + typeName |
146 } | 140 } |
147 | 141 |
148 return typeName | 142 return typeName |
149 } | 143 } |
OLD | NEW |