Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
djinni
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cpp-libs
djinni
Commits
ddcf5bb2
Commit
ddcf5bb2
authored
Aug 22, 2016
by
Andrew Twyman
Committed by
GitHub
Aug 22, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #273 from konovalov-aleks/fix_relative_paths_bug
Fixed import guard when using relative file paths
parents
6c869e1f
7300e57a
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
20 additions
and
9 deletions
+20
-9
src/source/parser.scala
src/source/parser.scala
+15
-9
test-suite/djinni/common.djinni
test-suite/djinni/common.djinni
+1
-0
test-suite/djinni/relative_paths.djinni
test-suite/djinni/relative_paths.djinni
+3
-0
test-suite/generated-src/inFileList.txt
test-suite/generated-src/inFileList.txt
+1
-0
No files found.
src/source/parser.scala
View file @
ddcf5bb2
...
...
@@ -266,31 +266,37 @@ def parseExternFile(externFile: File, inFileListWriter: Option[Writer]) : Seq[Ty
}
}
def
normalizePath
(
path
:
File
)
:
File
=
{
return
new
File
(
java
.
nio
.
file
.
Paths
.
get
(
path
.
toString
()).
normalize
().
toString
())
}
def
parseFile
(
idlFile
:
File
,
inFileListWriter
:
Option
[
Writer
])
:
Seq
[
TypeDecl
]
=
{
val
normalizedIdlFile
=
normalizePath
(
idlFile
)
if
(
inFileListWriter
.
isDefined
)
{
inFileListWriter
.
get
.
write
(
i
dlFile
+
"\n"
)
inFileListWriter
.
get
.
write
(
normalizedI
dlFile
+
"\n"
)
}
visitedFiles
.
add
(
i
dlFile
)
fileStack
.
push
(
i
dlFile
)
val
fin
=
new
FileInputStream
(
i
dlFile
)
visitedFiles
.
add
(
normalizedI
dlFile
)
fileStack
.
push
(
normalizedI
dlFile
)
val
fin
=
new
FileInputStream
(
normalizedI
dlFile
)
try
{
parse
(
i
dlFile
.
getName
,
new
InputStreamReader
(
fin
,
"UTF-8"
))
match
{
parse
(
normalizedI
dlFile
.
getName
,
new
InputStreamReader
(
fin
,
"UTF-8"
))
match
{
case
Left
(
err
)
=>
System
.
err
.
println
(
err
)
System
.
exit
(
1
);
return
null
;
case
Right
(
idl
)
=>
{
var
types
=
idl
.
typeDecls
idl
.
imports
.
foreach
(
x
=>
{
if
(
fileStack
.
contains
(
x
.
file
))
{
val
normalized
=
normalizePath
(
x
.
file
)
if
(
fileStack
.
contains
(
normalized
))
{
throw
new
AssertionError
(
"Circular import detected!"
)
}
if
(!
visitedFiles
.
contains
(
x
.
file
))
{
if
(!
visitedFiles
.
contains
(
normalized
))
{
x
match
{
case
IdlFileRef
(
file
)
=>
types
=
parseFile
(
file
,
inFileListWriter
)
++
types
types
=
parseFile
(
normalized
,
inFileListWriter
)
++
types
case
ExternFileRef
(
file
)
=>
types
=
parseExternFile
(
file
,
inFileListWriter
)
++
types
types
=
parseExternFile
(
normalized
,
inFileListWriter
)
++
types
}
}
})
...
...
test-suite/djinni/common.djinni
View file @
ddcf5bb2
...
...
@@ -14,3 +14,4 @@
@import "single_language_interfaces.djinni"
@import "extended_record.djinni"
@import "varnames.djinni"
@import "relative_paths.djinni"
test-suite/djinni/relative_paths.djinni
0 → 100644
View file @
ddcf5bb2
@import "./date.djinni"
@import "../djinni/date.djinni"
@extern "./date.yaml"
test-suite/generated-src/inFileList.txt
View file @
ddcf5bb2
...
...
@@ -16,6 +16,7 @@ djinni/multiple_inheritance.djinni
djinni/single_language_interfaces.djinni
djinni/extended_record.djinni
djinni/varnames.djinni
djinni/relative_paths.djinni
djinni/date.djinni
djinni/date.yaml
djinni/duration.djinni
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment