Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitec6c2c4

Browse files
author
Federico Fissore
committed
Updating ctags and ensuring namespaces are ignored when generating prototypes.
Fixes#44Signed-off-by: Federico Fissore <f.fissore@arduino.cc>
1 parent95fc10e commitec6c2c4

File tree

6 files changed

+83
-6
lines changed

6 files changed

+83
-6
lines changed

‎src/arduino.cc/builder/ctags_parser.go‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,14 @@ const FIELD_CODE = "code"
4545
constFIELD_FUNCTION_NAME="functionName"
4646
constFIELD_CLASS="class"
4747
constFIELD_STRUCT="struct"
48+
constFIELD_NAMESPACE="namespace"
4849
constFIELD_SKIP="skipMe"
4950

5051
constKIND_PROTOTYPE="prototype"
5152

5253
constTEMPLATE="template"
5354

54-
varFIELDS=map[string]bool{"kind":true,"line":true,"typeref":true,"signature":true,"returntype":true,"class":true,"struct":true}
55+
varFIELDS=map[string]bool{"kind":true,"line":true,"typeref":true,"signature":true,"returntype":true,"class":true,"struct":true,"namespace":true}
5556
varKNOWN_TAG_KINDS=map[string]bool{"prototype":true,"function":true}
5657

5758
typeCTagsParserstruct {
@@ -71,6 +72,7 @@ func (s *CTagsParser) Run(context map[string]interface{}) error {
7172
tags=filterOutUnknownTags(tags)
7273
tags=filterOutTagsWithField(tags,FIELD_CLASS)
7374
tags=filterOutTagsWithField(tags,FIELD_STRUCT)
75+
tags=filterOutTagsWithField(tags,FIELD_NAMESPACE)
7476
tags=skipTagsWhere(tags,signatureContainsDefaultArg)
7577
tags=addPrototypes(tags)
7678
tags=removeDefinedProtypes(tags)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
value/tmp/test030883150/preproc/ctags_target.cpp/^ int value() {$/;"kind:functionline:3namespace:Testsignature:()returntype:int
2+
setup/tmp/test030883150/preproc/ctags_target.cpp/^void setup() {}$/;"kind:functionline:8signature:()returntype:void
3+
loop/tmp/test030883150/preproc/ctags_target.cpp/^void loop() {}$/;"kind:functionline:9signature:()returntype:void
4+

‎src/arduino.cc/builder/test/ctags_parser_test.go‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,3 +225,21 @@ func TestCTagsParserDefaultArguments(t *testing.T) {
225225
require.Equal(t,"void setup();",prototypes[0].Prototype)
226226
require.Equal(t,"void loop();",prototypes[1].Prototype)
227227
}
228+
229+
funcTestCTagsParserNamespace(t*testing.T) {
230+
context:=make(map[string]interface{})
231+
232+
bytes,err:=ioutil.ReadFile(filepath.Join("ctags_output","TestCTagsParserNamespace.txt"))
233+
NoError(t,err)
234+
235+
context[constants.CTX_CTAGS_OUTPUT]=string(bytes)
236+
237+
ctagsParser:= builder.CTagsParser{PrototypesField:constants.CTX_PROTOTYPES}
238+
ctagsParser.Run(context)
239+
240+
prototypes:=context[constants.CTX_PROTOTYPES].([]*types.Prototype)
241+
242+
require.Equal(t,2,len(prototypes))
243+
require.Equal(t,"void setup();",prototypes[0].Prototype)
244+
require.Equal(t,"void loop();",prototypes[1].Prototype)
245+
}

‎src/arduino.cc/builder/test/ctags_runner_test.go‎

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,3 +181,48 @@ func TestCTagsRunnerSketchWithTypename(t *testing.T) {
181181

182182
require.Equal(t,expectedOutput,strings.Replace(context[constants.CTX_CTAGS_OUTPUT].(string),"\r\n","\n",-1))
183183
}
184+
185+
funcTestCTagsRunnerSketchWithNamespace(t*testing.T) {
186+
DownloadCoresAndToolsAndLibraries(t)
187+
188+
context:=make(map[string]interface{})
189+
190+
buildPath:=SetupBuildPath(t,context)
191+
deferos.RemoveAll(buildPath)
192+
193+
context[constants.CTX_HARDWARE_FOLDERS]= []string{filepath.Join("..","hardware"),"hardware","downloaded_hardware"}
194+
context[constants.CTX_TOOLS_FOLDERS]= []string{"downloaded_tools"}
195+
context[constants.CTX_FQBN]="arduino:avr:leonardo"
196+
context[constants.CTX_SKETCH_LOCATION]=filepath.Join("sketch_with_namespace","sketch.ino")
197+
context[constants.CTX_BUILD_PROPERTIES_RUNTIME_IDE_VERSION]="10600"
198+
context[constants.CTX_BUILT_IN_LIBRARIES_FOLDERS]= []string{"downloaded_libraries"}
199+
context[constants.CTX_OTHER_LIBRARIES_FOLDERS]= []string{"libraries"}
200+
context[constants.CTX_VERBOSE]=true
201+
202+
commands:= []types.Command{
203+
&builder.SetupHumanLoggerIfMissing{},
204+
205+
&builder.ContainerSetupHardwareToolsLibsSketchAndProps{},
206+
207+
&builder.ContainerMergeCopySketchFiles{},
208+
209+
&builder.ContainerFindIncludes{},
210+
211+
&builder.PrintUsedLibrariesIfVerbose{},
212+
&builder.WarnAboutArchIncompatibleLibraries{},
213+
&builder.CTagsTargetFileSaver{SourceField:constants.CTX_SOURCE},
214+
&builder.CTagsRunner{},
215+
}
216+
217+
for_,command:=rangecommands {
218+
err:=command.Run(context)
219+
NoError(t,err)
220+
}
221+
222+
ctagsTempFileName:=context[constants.CTX_CTAGS_TEMP_FILE_NAME].(string)
223+
expectedOutput:="value\t"+ctagsTempFileName+"\t/^\tint value() {$/;\"\tkind:function\tline:3\tnamespace:Test\tsignature:()\treturntype:int\n"+
224+
"setup\t"+ctagsTempFileName+"\t/^void setup() {}$/;\"\tkind:function\tline:8\tsignature:()\treturntype:void\n"+
225+
"loop\t"+ctagsTempFileName+"\t/^void loop() {}$/;\"\tkind:function\tline:9\tsignature:()\treturntype:void\n"
226+
227+
require.Equal(t,expectedOutput,strings.Replace(context[constants.CTX_CTAGS_OUTPUT].(string),"\r\n","\n",-1))
228+
}

‎src/arduino.cc/builder/test/helper_tools_downloader.go‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,12 @@ func DownloadCoresAndToolsAndLibraries(t *testing.T) {
108108
OsUrl{Os:"i686-mingw32",Url:"http://downloads.arduino.cc/tools/coan-5.2-i686-mingw32.zip"},
109109
OsUrl{Os:"x86_64-apple-darwin",Url:"http://downloads.arduino.cc/tools/coan-5.2-x86_64-apple-darwin.zip"},
110110
}},
111-
Tool{Name:"ctags",Version:"5.8-arduino2",
111+
Tool{Name:"ctags",Version:"5.8-arduino3",
112112
OsUrls: []OsUrl{
113-
OsUrl{Os:"i686-pc-linux-gnu",Url:"http://downloads.arduino.cc/tools/ctags-5.8-arduino2-i686-pc-linux-gnu.tar.bz2"},
114-
OsUrl{Os:"x86_64-pc-linux-gnu",Url:"http://downloads.arduino.cc/tools/ctags-5.8-arduino2-x86_64-pc-linux-gnu.tar.bz2"},
115-
OsUrl{Os:"i686-mingw32",Url:"http://downloads.arduino.cc/tools/ctags-5.8-arduino2-i686-mingw32.zip"},
116-
OsUrl{Os:"x86_64-apple-darwin",Url:"http://downloads.arduino.cc/tools/ctags-5.8-arduino2-x86_64-apple-darwin.zip"},
113+
OsUrl{Os:"i686-pc-linux-gnu",Url:"http://downloads.arduino.cc/tools/ctags-5.8-arduino3-i686-pc-linux-gnu.tar.bz2"},
114+
OsUrl{Os:"x86_64-pc-linux-gnu",Url:"http://downloads.arduino.cc/tools/ctags-5.8-arduino3-x86_64-pc-linux-gnu.tar.bz2"},
115+
OsUrl{Os:"i686-mingw32",Url:"http://downloads.arduino.cc/tools/ctags-5.8-arduino3-i686-mingw32.zip"},
116+
OsUrl{Os:"x86_64-apple-darwin",Url:"http://downloads.arduino.cc/tools/ctags-5.8-arduino3-x86_64-apple-darwin.zip"},
117117
}},
118118
}
119119

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespaceTest {
2+
intvalue() {
3+
return42;
4+
}
5+
int ciao =24;
6+
}
7+
voidsetup() {}
8+
voidloop() {}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp