Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplify #24

Draft
wants to merge 26 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Let's see if this passes.
  • Loading branch information
back2dos committed Feb 12, 2021
commit 15c575bfe20ad4e892fb9274b2963a7d3ee4b88a
11 changes: 5 additions & 6 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,25 +13,24 @@ os:
# - osx

env:
- HAXE_VERSION=3.4.7
- HAXE_VERSION=stable
- HAXE_VERSION=nightly

install:
- npm i -g lix@15.3.13
- lix install haxe $HAXE_VERSION
- lix download

script:
# - lix run travix interp # runtime stack overflow
- lix run travix neko
- lix run travix python
- lix run travix node
- lix run travix js
# - lix run travix flash
- lix run travix java
- if [[ "$(haxe -version)" =~ ^4.* ]]; then lix run travix java -D jvm; fi
- lix run travix java -D jvm
- lix run travix cpp
# - lix run travix cs # gencs stack overflow, to be investigated
- lix run travix cs -D erase-generics
- lix run travix php
- lix run travix lua

Expand Down
2 changes: 0 additions & 2 deletions extraParams.hxml

This file was deleted.

8 changes: 4 additions & 4 deletions haxe_libraries/hxcpp.hxml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
-D hxcpp=4.0.8
# @install: lix --silent download "haxelib:/hxcpp#4.0.8" into hxcpp/4.0.8/haxelib
# @run: haxelib run-dir hxcpp ${HAXE_LIBCACHE}/hxcpp/4.0.8/haxelib
-cp ${HAXE_LIBCACHE}/hxcpp/4.0.8/haxelib/
# @install: lix --silent download "haxelib:/hxcpp#4.2.1" into hxcpp/4.2.1/haxelib
# @run: haxelib run-dir hxcpp ${HAXE_LIBCACHE}/hxcpp/4.2.1/haxelib
-cp ${HAXE_LIBCACHE}/hxcpp/4.2.1/haxelib/
-D hxcpp=4.2.1
4 changes: 4 additions & 0 deletions haxe_libraries/hxcs.hxml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# @install: lix --silent download "haxelib:/hxcs#4.2.0" into hxcs/4.2.0/haxelib
# @run: haxelib run-dir hxcs ${HAXE_LIBCACHE}/hxcs/4.2.0/haxelib
-cp ${HAXE_LIBCACHE}/hxcs/4.2.0/haxelib/
-D hxcs=4.2.0
8 changes: 4 additions & 4 deletions haxe_libraries/hxjava.hxml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
-D hxjava=3.2.0
# @install: lix --silent download "haxelib:/hxjava#3.2.0" into hxjava/3.2.0/haxelib
# @run: haxelib run-dir hxjava ${HAXE_LIBCACHE}/hxjava/3.2.0/haxelib
-cp ${HAXE_LIBCACHE}/hxjava/3.2.0/haxelib/
# @install: lix --silent download "haxelib:/hxjava#4.2.0" into hxjava/4.2.0/haxelib
# @run: haxelib run-dir hxjava ${HAXE_LIBCACHE}/hxjava/4.2.0/haxelib
-cp ${HAXE_LIBCACHE}/hxjava/4.2.0/haxelib/
-D hxjava=4.2.0
-java-lib lib/hxjava-std.jar
6 changes: 3 additions & 3 deletions haxe_libraries/tink_testrunner.hxml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# @install: lix --silent download "gh://github.com/haxetink/tink_testrunner#866de8b991be89b969825b0c0f5565d51f96a6f7" into tink_testrunner/0.8.0/github/866de8b991be89b969825b0c0f5565d51f96a6f7
-lib ansi
-lib tink_macro
-lib tink_streams
-cp ${SCOPE_DIR}/../testrunner/src
-D tink_testrunner=0.8.0
--macro Sys.println("haxe_libraries/tink_testrunner.hxml:5: [Warning] Using dev version of library tink_testrunner")
-cp ${HAXE_LIBCACHE}/tink_testrunner/0.8.0/github/866de8b991be89b969825b0c0f5565d51f96a6f7/src
-D tink_testrunner=0.8.0
24 changes: 11 additions & 13 deletions src/tink/streams/Stream.hx
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ abstract Stream<Item, Quality>(StreamObject<Item, Quality>) from StreamObject<It
else
new SelectStream(this, selector);

public function forEach<Result>(f:Consumer<Item, Result>):Future<IterationResult<Item, Result, Quality>>
public function forEach<Result>(f:(item:Item)->Future<Option<Result>>):Future<IterationResult<Item, Result, Quality>>
return this.forEach(f);

public function filter(f:Item->Return<Bool, Quality>):Stream<Item, Quality>
Expand Down Expand Up @@ -91,7 +91,7 @@ private class FlattenStream<Item, Quality> implements StreamObject<Item, Quality
public function new(source)
this.source = source;

public function forEach<Result>(f:Consumer<Item, Result>):Future<IterationResult<Item, Result, Quality>>
public function forEach<Result>(f:(item:Item)->Future<Option<Result>>):Future<IterationResult<Item, Result, Quality>>
return
source.forEach(child -> child.forEach(f).map(r -> switch r {
case Done: None;
Expand All @@ -116,7 +116,7 @@ private class PromiseStream<Item> implements StreamObject<Item, Error> {
public function new(stream)
this.stream = stream;

public function forEach<Result>(f:Consumer<Item, Result>):Future<IterationResult<Item, Result, Error>>
public function forEach<Result>(f:(item:Item)->Future<Option<Result>>):Future<IterationResult<Item, Result, Error>>
return stream.next(s -> s.forEach(f)).map(o -> switch o {
case Success(data):
data;
Expand All @@ -130,7 +130,7 @@ private class SingleItem<Item, Quality> implements StreamObject<Item, Quality> {
public function new(item)
this.item = item;

public function forEach<Result>(f:Consumer<Item, Result>)
public function forEach<Result>(f:(item:Item)->Future<Option<Result>>)
return new Future<IterationResult<Item, Result, Quality>>(
trigger -> Helper.trySync(
f(item),
Expand All @@ -152,23 +152,21 @@ enum IterationResult<Item, Result, Quality> {
}

interface StreamObject<Item, Quality> {
function forEach<Result>(f:Consumer<Item, Result>):Future<IterationResult<Item, Result, Quality>>;
function forEach<Result>(f:(item:Item)->Future<Option<Result>>):Future<IterationResult<Item, Result, Quality>>;
}

private enum LinkKind<Item, Quality, Tail> {
Fin(error:Null<Quality>);
Cons(head:Item, tail:Tail);
}

typedef Consumer<Item, Result> = (item:Item)->Future<Option<Result>>;

private class Empty<Item, Quality> implements StreamObject<Item, Quality> {

static final INST:StreamObject<Dynamic, Dynamic> = new Empty();

function new() {}

public function forEach<Result>(f:Consumer<Item, Result>):Future<IterationResult<Item, Result, Quality>>
public function forEach<Result>(f:(item:Item)->Future<Option<Result>>):Future<IterationResult<Item, Result, Quality>>
return Done;
}

Expand All @@ -179,7 +177,7 @@ private class Compound<Item, Quality> implements StreamObject<Item, Quality> {
this.parts = parts;
}

public function forEach<Result>(f:Consumer<Item, Result>) {
public function forEach<Result>(f:(item:Item)->Future<Option<Result>>) {
var index = 0,
cur = Future.sync(Done);
return new Future<IterationResult<Item, Result, Quality>>(trigger -> {
Expand Down Expand Up @@ -227,7 +225,7 @@ private class SelectStream<In, Out, Quality> implements StreamObject<Out, Qualit
function continued(source):Stream<Out, Quality>
return new SelectStream(source, selector);

public function forEach<Result>(f:Consumer<Out, Result>):Future<IterationResult<Out, Result, Quality>>
public function forEach<Result>(f:(item:Out)->Future<Option<Result>>):Future<IterationResult<Out, Result, Quality>>
return
source.forEach(
item -> {
Expand Down Expand Up @@ -286,7 +284,7 @@ private class Grouped<Item, Quality> implements StreamObject<Item, Quality> {
public function new(source)
this.source = source;

public function forEach<Result>(f:Consumer<Item, Result>):Future<IterationResult<Item, Result, Quality>>
public function forEach<Result>(f:(item:Item)->Future<Option<Result>>):Future<IterationResult<Item, Result, Quality>>
return
source.forEach(
group -> switch group {
Expand Down Expand Up @@ -355,7 +353,7 @@ private class AsyncLinkStream<Item, Quality> implements StreamObject<Item, Quali
public function new(link)
this.link = link;

public function forEach<Result>(f:Consumer<Item, Result>) {
public function forEach<Result>(f:(item:Item)->Future<Option<Result>>) {
var pos = link;
return new Future<IterationResult<Item, Result, Quality>>(trigger -> {
final wait = new CallbackLinkRef();
Expand Down Expand Up @@ -409,7 +407,7 @@ private class SyncLinkStream<Item, Quality> implements StreamObject<Item, Qualit
public function new(link)
this.link = link;

public function forEach<Result>(f:Consumer<Item, Result>) {
public function forEach<Result>(f:(item:Item)->Future<Option<Result>>) {
var pos = link;
return new Future<IterationResult<Item, Result, Quality>>(trigger -> {
final wait = new CallbackLinkRef();
Expand Down
3 changes: 1 addition & 2 deletions tests.hxml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
-cp ./tests/
-main RunTests
-lib tink_unittest
-D no-deprecation-warnings
-lib tink_unittest